Binary Tree Level Order Traversal II
2014-11-17 10:09
375 查看
Fair Binary
Tree Level Order Traversal II
Show Result My Submissions
47%Accepted
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).
Example
Given binary tree
{3,9,20,#,#,15,7},
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:
[ [15,7], [9,20], [3] ]
1. regular level-order tree traversal, push arraylist of each level into a stack
pop from the stack to the final arrayList
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: The root of binary tree. * @return: buttom-up level order a list of lists of integer */ public ArrayList<ArrayList<Integer>> levelOrderButtom(TreeNode root) { ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>(); if(root == null) { return rst; } LinkedList<ArrayList<Integer>> rstr = new LinkedList<ArrayList<Integer>>(); ArrayList<Integer> level = new ArrayList(); Queue<TreeNode> q = new LinkedList(); q.add(root); while(!q.isEmpty()){ int size = q.size(); for(int i = 0; i < size; i++) { TreeNode temp = q.poll(); level.add(temp.val); if(temp.left != null) { q.add(temp.left); } if(temp.right != null) { q.add(temp.right); } } rstr.push(new ArrayList(level)); level = new ArrayList<Integer>(); } while(!rstr.isEmpty()) { rst.add(rstr.pop()); } return rst; } }
2. when add level to rst, add at the first index everytime.
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: The root of binary tree. * @return: buttom-up level order a list of lists of integer */ public ArrayList<ArrayList<Integer>> levelOrderButtom(TreeNode root) { ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>(); if(root == null) { return rst; } ArrayList<Integer> level = new ArrayList(); Queue<TreeNode> q = new LinkedList(); q.add(root); while(!q.isEmpty()){ int size = q.size(); for(int i = 0; i < size; i++) { TreeNode temp = q.poll(); level.add(temp.val); if(temp.left != null) { q.add(temp.left); } if(temp.right != null) { q.add(temp.right); } } rst.add(0, new ArrayList(level)); level = new ArrayList<Integer>(); } return rst; } }
相关文章推荐
- LeetCode OJ 之 Binary Tree Level Order Traversal II (二叉树的层次遍历-二)
- [leetcode刷题系列]Binary Tree Level Order Traversal II
- 107 Binary Tree Level Order Traversal II
- 【Leetcode】【Easy】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
- [LeetCode]Binary Tree Level Order Traversal II
- leetcode_question_107 Binary Tree Level Order Traversal II
- leetcode 日经贴,Cpp code -Binary Tree Level Order Traversal II
- LeetCode:Binary Tree Level Order Traversal II (按层遍历)
- 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
- Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- Leetcode: Binary Tree Level Order Traversal II