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].

Note: Recursive solution is trivial, could you do it iteratively?

中文:二叉树的兴许遍历(左-右-根)。能用非递归吗?

递归:

public class BinaryTreePostorderTraversal {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
if(root == null)
return list;
list.addAll(postorderTraversal(root.left));
list.addAll(postorderTraversal(root.right));
list.add(root.val);
return list;
}
// Definition for binary tree
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
}

非递归:

    public List<Integer> postorderTraversal(TreeNode root){
List<Integer> list = new ArrayList<Integer>();
if(root == null)
return list;
Stack<TreeNode> stack = new Stack<TreeNode>();
stack.push(root);//最后訪问
while(!stack.isEmpty()){
TreeNode current = stack.peek();
//根节点无子节点
if(current.left == null && current.right == null){
list.add(current.val);
stack.pop();
}
if(current.left != null){
stack.push(current.left);
current.left = null;
continue;
}
if(current.right != null){
stack.push(current.right);
current.right = null;
continue;
}
}
return list;
}

最新文章

  1. service mysql start出错,
  2. JFinal学习
  3. -webkit-overflow-scrolling : touch;快速滚动标签
  4. Java多线程系列
  5. HashSet中的元素必须重写equals方法和hashCode方法
  6. POJ 2689
  7. Silverlight动画学习笔记(三):缓动函数
  8. Create a method synchronized without using synchronized keyword
  9. Python中zip()函数用法
  10. android面试题之一
  11. 意外发现的大批量导入数据SqlBulkCopy类
  12. Java排序算法之归并排序
  13. 数据结构--KMP算法总结
  14. 在SpringBoot中配置定时任务
  15. TabLayoutViewPagerDemo【TabLayout+ViewPager可滑动】
  16. bboss oreach循环嵌套遍历map
  17. app原生和H5混合使用自动化
  18. 学习Python第七天
  19. kubeadm安装Kubernetes V1.10集群详细文档
  20. JAVA中通过Hibernate-Validation进行参数验证

热门文章

  1. Ubuntu 16.04下IntelliJ IDEA菜单显示乱码的问题解决
  2. 获取元素位置信息和所占空间大小(via:js&amp;jquery)
  3. XCODE 4.5 IOS多语言设置 及NSLocalizedString和NSLocalizedStringFromTable的用法。
  4. flash+xml无法显示中文的解决办法
  5. 如何从底层调试docker
  6. Java数据结构-线性表之静态链表
  7. JAVA Eclipse 创建android xml看不到预览怎么办
  8. make -j 4 echo !$
  9. vue相关知识
  10. AWK 思维导图