「NOIP 2020」微信步數(計數)
阿新 • • 發佈:2020-12-05
此部落格連結:
二叉樹的後序遍歷
題目連結:https://leetcode-cn.com/problems/binary-tree-postorder-traversal/
題目
給定一個二叉樹,返回它的 後序遍歷。
示例:
輸入: [1,null,2,3]
1
\
2
/
3
輸出: [3,2,1]
題解
思路:
1.使用遞迴。
2.使用迭代。二叉樹的後序迭代演算法和前序迭代是一樣的,因為前序迭代是根左右,後序迭代是左右根,把前序迭代中左右換一下位置,然後倒序遍歷就是後序遍歷了,所以這裡採用使用兩個棧,先仿照前序遍歷,遍歷出結果為根右左的結果,然後放到棧中,重新取出就是後續遍歷了。
方法
程式碼
class Solution { public List<Integer> postorderTraversal(TreeNode root) { List <Integer> list=new ArrayList(); if(root==null) return list; Stack<TreeNode> stack1=new Stack(); Stack<Integer> stack2=new Stack(); stack1.push(root);while(!stack1.isEmpty()) { TreeNode temp=stack1.pop(); stack2.push(temp.val); if(temp.left!=null) { stack1.push(temp.left); } if(temp.right!=null) { stack1.push(temp.right); } }while(!stack2.isEmpty()) { list.add(stack2.pop()); } return list; } }