Binary Tree Level Order Traversal II
来源:互联网 发布:淘宝的ip地址是多少 编辑:程序博客网 时间:2024/05/21 11:17
原题如下:
Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).
我的算法:
1. 首先获得树的高度
2. 层序递归遍历二叉树(从左到右)
实现如下:
package leetCode;import java.util.ArrayList;import java.util.List;public class Solution { //获得二叉树的高度,采用递归算法,简单实用 int depth(TreeNode root){ int res = 0; if(root==null){ return 0; } int l = depth(root.left); int r = depth(root.right); res = Math.max(l, r)+1; return res; } //当前层的高度为level,采用递归算法,简单实用,list为最终的结果list, //list作参数(java对象作为参数),可以看做是引用传递,在方法中对list修改,能 //影响最终的list void levelOrder(TreeNode root,int level,List<List<Integer>> list){ if(root==null){ return; } int toIndex = list.size()-1; list.get(toIndex-level).add(root.val); //从左到右递归层序递归遍历二叉树 levelOrder(root.left,level+1,list); levelOrder(root.right,level+1,list); } public List<List<Integer>> levelOrderBottom(TreeNode root) { ArrayList<List<Integer>> res = new ArrayList<List<Integer>>(); int dep = depth(root); for(int i=0;i<dep;i++){ ArrayList<Integer> t = new ArrayList<Integer>(); res.add(t); } levelOrder(root,0,res); return res; } public static void main(String[] args) { TreeNode t = TreeNode.getDefaultTree(); List<List<Integer>> res = new ArrayList<List<Integer>>(); Solution s = new Solution(); res = s.levelOrderBottom(t); for(int i=0;i<res.size();i++){ System.out.println(res.get(i)); } }}
TreeNode的代码如下:
package leetCode;public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } //获得一颗默认的树,跟上面题中一样 public static TreeNode getDefaultTree(){ TreeNode t1 = new TreeNode(3); TreeNode t2 = new TreeNode(9); TreeNode t3 = new TreeNode(20); TreeNode t4 = new TreeNode(15); TreeNode t5 = new TreeNode(7); t1.left = t2; t1.right = t3; t3.left = t4; t3.right = t5; return t1; }}
原题地址:https://leetcode.com/problems/binary-tree-level-order-traversal-ii/
0 0
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- [Leetcode]Binary Tree Level Order Traversal II
- [leetcode]Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- redis 安装 windows
- apache/nginx
- [考试维护]修改代码的感受
- 2156 分数矩阵
- java基础学习之(一):继承
- Binary Tree Level Order Traversal II
- Redis Sentinel:集群Failover解决方案
- 欢迎使用CSDN-markdown编辑器
- 不用翻墙更新SDK
- iOS IAP恢复
- Linux终端配置输入输出(termios)函数
- 关于android的命名空间
- Vim 批量替换
- Android 编程下 SQLite 大数据量操作优化(插入操作)