zoukankan      html  css  js  c++  java
  • 145. Binary Tree Postorder Traversal

    recursive比较简单。。

    public class Solution 
    {
        List<Integer> res = new ArrayList<Integer>();
        public List<Integer> postorderTraversal(TreeNode root) 
        {
            helper(root);
            
            return res;
        }
        
        public void helper(TreeNode root)
        {
            if(root == null) return;
            
            helper(root.left);
            helper(root.right);
            res.add(root.val);
        }
    }
    

    Iterative:

    在纸上写出顺序,然后想用STACK来做,结果发现放入STACK的顺序就是preOrder traversal先遍历right child再left child的顺序。

    所以按preOrder来做,只不过先遍历右边再遍历左边,然后因为是倒过来的,最后reverse一下就行了。。

    public class Solution 
    {
        public List<Integer> postorderTraversal(TreeNode root) 
        {
            Stack<TreeNode> stk = new Stack<TreeNode>();
            List<Integer> res = new ArrayList<>();
            if(root == null) return res;
            
            
            TreeNode temp = root;
            while(!stk.isEmpty() || temp != null)
            {
                while(temp!=null)
                {
                    res.add(temp.val);
                    stk.push(temp);
                    temp = temp.right;
                }
                
                temp = stk.pop();
                temp = temp.left;
                
                
            }
            Collections.reverse(res);
            return res;
            
        }
    
    }
    

    汗颜。。

  • 相关阅读:
    xpath获取a标签下文本
    Python学习笔记Day26
    DNS原理
    命令实战解析
    linux系统ext文件系统知识
    磁盘分区重点知识
    机械磁盘读写磁盘数据的原理
    linux用户管理
    linux命令讲解
    linux系统定时任务
  • 原文地址:https://www.cnblogs.com/reboot329/p/5891907.html
Copyright © 2011-2022 走看看