Binary Tree Postorder Traversal
来源:互联网 发布:西西软件下载网站 编辑:程序博客网 时间:2024/06/07 14:29
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]
.
Postorder is also a type of DFS. So we need to use a stack to help us control the visiting order of every node. Since we need to visit the root node at last, that means we would visit the root node in the scenario that traverses back from the children node. So we can separate this problem into two cases, one is to travel down and another is to travel back.
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public ArrayList<Integer> postorderTraversal(TreeNode root) { ArrayList<Integer> result = new ArrayList<Integer>(); Stack buffer = new Stack<TreeNode>(); TreeNode prev = null; if (root == null) {return result;} buffer.push(root); while (!buffer.isEmpty()) { TreeNode cur = (TreeNode) buffer.peek(); // traverse down if (prev == null || prev.left == cur || prev.right == cur) {if (cur.left != null) {buffer.push(cur.left);}else if (cur.right != null) {buffer.push(cur.right);}else {result.add(cur.val);buffer.pop();}} // traverse back else {// back from left if (cur.left == prev) {// check right if (cur.right != null) {buffer.push(cur.right);} else {result.add(cur.val);buffer.pop();}} //back from right else {result.add(cur.val);buffer.pop();}} prev = cur; } return result; }}
0 0
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal
- 苦撑待变,时不我待。这个月抓不住,即放手。
- 使用javamail发送邮件
- Android:手机扫描局域网所有ip,并进行socket通讯
- 【iOS】MD5加密与网络数据安全
- 获取屏幕尺寸大小,使程序能在不同大小的手机上有更好的兼容性
- Binary Tree Postorder Traversal
- css命名规范
- uva:10700 - Camel trading(贪心)
- 跑步相关的一些术语
- uva:10340 - All in All(字符串匹配)
- Unity优化总结
- 树莓派开机运行node.js脚本的方法
- uva:10487 - Closest Sums(二分查找)
- C++中 类与类之间的关系