1. 程式人生 > 實用技巧 >「NOIP 2020」微信步數(計數)

「NOIP 2020」微信步數(計數)

此部落格連結:

二叉樹的後序遍歷

題目連結: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; } }