LeetCode题解-145-Binary Tree Postorder Traversal
来源:互联网 发布:定位寻人软件 编辑:程序博客网 时间:2024/06/03 20:09
尽管写LeetCode解答主要是为了自己整理思路,但是如果对您也正好有帮助,请点个赞给菜鸟一点鼓励吧 :-)
原题
解法概览
解法1为递归;
解法2位迭代。
解法1
解题思路
递归法。后序遍历左子树,后序遍历右子树,访问根节点。
代码
public class Solution145_recursive { public List<Integer> postorderTraversal(TreeNode root) { ArrayList<Integer> treeValList = new ArrayList<Integer>(); if (root == null) return treeValList; ArrayList<Integer> leftTreeValList = (ArrayList<Integer>) postorderTraversal(root.left); ArrayList<Integer> rightTreeValList = (ArrayList<Integer>) postorderTraversal(root.right); treeValList.addAll(leftTreeValList); treeValList.addAll(rightTreeValList); treeValList.add(root.val); return treeValList; }}
解法2
解题思路
1)当栈顶指针非空,应遍历左子树(遍历时不访问节点);
2)若从左子树返回,如果当前节点的右子树为空或者已被访问,那么右子树进栈,否则出栈,访问该节点。
图解
看不清图的话可以在浏览器 页面中单独打开。
代码
<pre name="code" class="java">public class Solution145_iterator { public List<Integer> postorderTraversal(TreeNode root) { Stack<TreeNode> treeNodeStack = new Stack<TreeNode>(); ArrayList<Integer> treeNodeList = new ArrayList<Integer>(); treeNodeStack.push(root); TreeNode lastVisit = null; while (!treeNodeStack.empty()){ while (treeNodeStack.peek() != null){ TreeNode currentNode = treeNodeStack.peek(); treeNodeStack.push(currentNode.left); } treeNodeStack.pop(); if (!treeNodeStack.isEmpty()){ TreeNode currentNode = treeNodeStack.peek(); if (currentNode.right == null || currentNode.right == lastVisit){ lastVisit = treeNodeStack.pop(); treeNodeList.add(lastVisit.val); treeNodeStack.push(null); } else{ treeNodeStack.push(currentNode.right); } } } return treeNodeList; }}
0 0
- LeetCode题解-145-Binary Tree Postorder Traversal
- LeetCode题解:Binary Tree Postorder Traversal
- LeetCode(145)Binary Tree Postorder Traversal
- LeetCode: Binary Tree Postorder Traversal [145]
- LeetCode 145 Binary Tree Postorder Traversal
- LeetCode 145 Binary Tree Postorder Traversal
- leetcode || 145、Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal - LeetCode 145
- Leetcode[145]-Binary Tree Postorder Traversal
- LeetCode 145 Binary Tree Postorder Traversal
- leetcode(145):Binary Tree Postorder Traversal
- leetcode-145-Binary Tree Postorder Traversal
- [Leetcode 145, Hard] Binary Tree Postorder Traversal
- leetcode[145]:Binary Tree Postorder Traversal
- [leetcode-145]Binary Tree Postorder Traversal(c++)
- Leetcode #145 Binary Tree Postorder Traversal
- LeetCode 145 : Binary Tree Postorder Traversal
- LeetCode 145: Binary Tree Postorder Traversal
- BZOJ 1150: [CTSC2007]数据备份Backup
- Storm集群结构图
- day_06_反射01
- 写一个方法,将一个字符串(1234567890)转换成(1,234,567,890)每三个一组用逗号隔开()
- Real-Time Compressive Tracking阅读与分析
- LeetCode题解-145-Binary Tree Postorder Traversal
- 队列题目
- AutoMapper
- bzoj3223 文艺平衡树
- 把图片导入到canvas
- ATOM基础教程一ATOM按键绑定(6)
- 我的JAVA学习之路
- button和sumbit提交表单的区别
- 图论总结