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);
        }*/
    }
  • 相关阅读:
    软考知识点梳理--综合布线
    软考知识点梳理--典型应用集成技术
    软考知识点梳理--V型生命周期模型
    软考知识点梳理--人际沟通风格
    软考知识点梳理--沟通原则
    软考知识点梳理--项目建议书
    软考知识点梳理--版本管理
    软考知识点梳理--信息系统集成项目及特点
    软考知识点梳理--信息论
    软考知识点梳理--项目验收
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4679868.html
Copyright © 2011-2022 走看看