004-107-Binary Tree Level Order Traversal II 层序遍历二叉树之二
2017-04-10 22:05
423 查看
Description
分析
code
分析
code
Description
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). For example: Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 return its bottom-up level order traversal as: [ [15,7], [9,20], [3] ]
分析
这跟上一篇博文一样,层序遍历,但是是从最底层开始打印。我们只要每遍历一层,就把该层节点的值插入到输出列表的最前面,也就是index为0的位置。这个时候如果用ArrayList就很低效了,因为ArrayList内部是基于数组实现,往ArrayList头部插入一个元素意味着移动整个数组,一次插入操作需要O(n)时间。那就用LinkedList,它是基于链表的实现,往链表的头部插入一个节点只需O(1)时间。code
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> opList=new LinkedList<List<Integer>>(); LinkedList<TreeNode> queue=new LinkedList<TreeNode>(); if(root!=null){ queue.offer(root); while(!queue.isEmpty()){ int levelSize=queue.size();//该层节点数 ArrayList<Integer> levelNode=new ArrayList<Integer>(); for(int i=0;i<levelSize;i++){ TreeNode cur=queue.poll(); levelNode.add(cur.val); if(cur.left!=null)queue.offer(cur.left);//下一层的节点 if(cur.right!=null)queue.offer(cur.right);//下一层的节点 } opList.add(0,levelNode);//插入输出链表头部,反向打印 //继续下一层→ } } return opList; } }
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- 二叉树的层序遍历 改进版 Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II 二叉树层序遍历之二
- LeetCode | Binary Tree Level Order Traversal II(二叉树层序遍历II)
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- LeetCode: 107_Binary Tree Level Order Traversal II | 二叉树自底向上的层次遍历 | Easy
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- Leetcode 107 Binary Tree Level Order Traversal II 二叉树层次遍历与倒转
- LeetCode Binary Tree Level Order Traversal II (二叉树颠倒层序)
- 【遍历二叉树】05二叉树的层次遍历II【Binary Tree Level Order Traversal II】
- leetcode 题解:Binary Tree Level Order Traversal (二叉树的层序遍历)
- 【LeetCode】Binary Tree Level Order Traversal--(二叉树层序遍历)
- LeetCode OJ:Binary Tree Level Order Traversal(二叉树的层序遍历)
- 【遍历二叉树】06二叉树曲折(Z字形)层次遍历II【Binary Tree Zigzag Level Order Traversal】
- Binary Tree Level Order Traversal II 二叉树按层遍历(反向输出)@LeetCode
- LeetCode | Binary Tree Level Order Traversal(二叉树层序遍历)
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- leetcode:Binary Tree Level Order Traversal 二叉树层序遍历
- Binary Tree Level Order Traversal I和II 层次遍历二叉树