zoukankan      html  css  js  c++  java
  • [leedcode 145] Binary Tree Postorder Traversal

    Given a binary tree, return the postorder traversal of its nodes' values.

    For example:
    Given binary tree {1,#,2,3},

       1
        
         2
        /
       3
    

    return [3,2,1].

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public List<Integer> postorderTraversal(TreeNode root) {
            //后序遍历和中序遍历不同,因为需要访问完左节点和右节点之后才能访问根节点,因此,保存记录时,需要判断一个节点是否是叶子节点,以及
            //他的孩子是否遍历过,此时使用mark做标记,表示子孩子已经遍历过。注意最后向栈内添加子节点的顺序,先push右节点,再push子节点
            List<Integer>res=new ArrayList<Integer>();
            if(root==null) return res;
            Stack<TreeNode> stack=new Stack<TreeNode>();
            stack.push(root);
            TreeNode mark=root; //代表已经访问的节点
            while(!stack.isEmpty()){
                TreeNode node=stack.peek();
                if(node.left==null&&node.right==null||node.left==mark||node.right==mark){
                    res.add(node.val);
                    mark=node;
                    stack.pop();
                }else{
                    if(node.right!=null){//////顺序
                        stack.push(node.right);
                    }
                    if(node.left!=null){
                        stack.push(node.left);
                    }
                }
            }
              return res;
        }
       /* List<Integer> res;
        public List<Integer> postorderTraversal(TreeNode root) {
            res=new ArrayList<Integer>();
            if(root==null) return res;
            getRes(root);
            return res;
        }
        public void getRes(TreeNode root){
            if(root==null) return;
            getRes(root.left);
            getRes(root.right);
            res.add(root.val);
        }*/
    }
  • 相关阅读:
    【剑指Offer】6、旋转数组的最小数字
    【剑指Offer】5、用两个栈实现队列
    【剑指Offer】4、重建二叉树
    python面试经典315
    shell面试经典70例
    vim编辑器使用
    bootstrap3基本了解
    Windows Server 2008允许多用户登录远程桌面
    配置远程桌面
    Python-Python及PyCharm的下载与安装
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4679868.html
Copyright © 2011-2022 走看看