LeetCode.102(107) Binary Tree Level Order Traversal I&II
2017-12-24 13:55
429 查看
题目102:
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree
return its level order traversal as:
分析:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
//给定二叉树,返回层序遍历结果
List<List<Integer>> list=new ArrayList<>();
if(root==null) return list;
backtrace(list,root,0);
return list;
}
//递归实现
public void backtrace(List<List<Integer>> list,TreeNode root,int depth){
if(root==null) return ;
if(depth==list.size()){
//创建子集合
list.add(new ArrayList<>());
}
//递归实现
backtrace(list,root.left,depth+1);
list.get(depth).add(root.val);
backtrace(list,root.right,depth+1);
}
}
题目107:
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
return its bottom-up level order traversal as:
分析:
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree
[3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
分析:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
//给定二叉树,返回层序遍历结果
List<List<Integer>> list=new ArrayList<>();
if(root==null) return list;
backtrace(list,root,0);
return list;
}
//递归实现
public void backtrace(List<List<Integer>> list,TreeNode root,int depth){
if(root==null) return ;
if(depth==list.size()){
//创建子集合
list.add(new ArrayList<>());
}
//递归实现
backtrace(list,root.left,depth+1);
list.get(depth).add(root.val);
backtrace(list,root.right,depth+1);
}
}
题目107:
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] ]
分析:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<List<Integer>> levelOrderBottom(TreeNode root) { //给定二叉树,对于每层元素层序遍历。最后结果从底层输出 List<List<Integer>> list=new ArrayList<>(); if(root==null) return list; Queue<TreeNode> queueOdd=new LinkedList<>(); Queue<TreeNode> queueEven=new LinkedList<>(); queueOdd.offer(root); int count=1; while(!queueOdd.isEmpty()||!queueEven.isEmpty()){ List<Integer> subList=new ArrayList<>(); TreeNode temp=new TreeNode(0); while(count%2==1&&!queueOdd.isEmpty()){ //奇数层 temp=queueOdd.poll(); subList.add(temp.val); if(temp.left!=null){ queueEven.offer(temp.left); } if(temp.right!=null){ queueEven.offer(temp.right); } } while(count%2==0&&!queueEven.isEmpty()){ //奇数层 temp=queueEven.poll(); subList.add(temp.val); if(temp.left!=null){ queueOdd.offer(temp.left); } if(temp.right!=null){ queueOdd.offer(temp.right); } } list.add(0,subList); count++; } return list; } }
相关文章推荐
- LeetCode Algorithms #107 <Binary Tree Level Order Traversal II>
- #102 Binary Tree Level Order Traversal & #107 Binary Tree Level Order Traversal II
- [LeetCode 107]Binary Tree Level Order Traversal II(递归法)
- LeetCode 107 Binary Tree Level Order Traversal II
- LeetCode(107) Binary Tree Level Order Traversal II
- LeetCode107——Binary Tree Level Order Traversal II
- LeetCode 107: Binary Tree Level Order Traversal II
- Leetcode[107]-Binary Tree Level Order Traversal II
- LeetCode 107 Binary Tree Level Order Traversal II题解
- Leetcode_107_Binary Tree Level Order Traversal II
- LeetCode之“树”:Binary Tree Level Order Traversal && Binary Tree Level Order Traversal II
- [leedcode 107] Binary Tree Level Order Traversal II
- 【LeetCode从零单刷】Binary Tree Level Order Traversal I & II
- 107 Binary Tree Level Order Traversal II
- leetcode 107 Binary Tree Level Order Traversal II C++
- Leetcode 107 Binary Tree Level Order Traversal II
- LeetCode: 107_Binary Tree Level Order Traversal II | 二叉树自底向上的层次遍历 | Easy
- 107[Leetcode].Binary Tree Level Order Traversal II
- leetcode-107-Binary Tree Level Order Traversal II
- LeetCode 107 Binary Tree Level Order Traversal II