码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 145. 二叉树的后序遍历

时间:2019-12-04 22:14:52      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:class   进一步   nod   tmp   pos   迭代   solution   result   算法   

给定一个二叉树,返回它的 后序 遍历。

示例:

输入: [1,null,2,3]
1
\
2
/
3

输出: [3,2,1]

 1 //递归算法
 2 class Solution {
 3     public List<Integer> postorderTraversal(TreeNode root) {
 4         List<Integer> list = new ArrayList<Integer>();
 5         if(root==null) return list;
 6         postorder(root,list);
 7         return list;
 8     }
 9     public List<Integer> postorder(TreeNode node,List<Integer> list){
10         if(node.left!=null)postorder(node.left,list);
11         if(node.right!=null)postorder(node.right,list);
12         list.add(node.val);
13         return list;
14     }
15 }
16 //迭代算法
17 class Solution {
18     public List<Integer> postorderTraversal(TreeNode root) {
19         List<Integer> list = new ArrayList<Integer>();
20         if(root==null)return list;
21         Stack<TreeNode> stack = new Stack<TreeNode>();
22         Stack<TreeNode> stackresult = new Stack<TreeNode>();
23         stack.push(root);
24         while(!stack.empty()){
25             TreeNode tmpnode = stack.pop();
26             stackresult.push(tmpnode);
27             if(tmpnode.left!=null)stack.push(tmpnode.left);
28             if(tmpnode.right!=null)stack.push(tmpnode.right);
29         }
30         while(!stackresult.empty()){
31             TreeNode tmpnode = stackresult.pop();
32             list.add(tmpnode.val);
33         }
34         return list;
35     }
36 }

直观想法:前序遍历的结果反转过来的结果是否就是后序遍历?再进一步分析在前序遍历的基础上改变下压栈的顺序即可。

leetcode 145. 二叉树的后序遍历

标签:class   进一步   nod   tmp   pos   迭代   solution   result   算法   

原文地址:https://www.cnblogs.com/gongzixiaobaibcy/p/11985715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!