Binary Tree Level Order Traversal II
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).
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] ]
/** * 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>> levelOrderBottom(TreeNode root) { // write your code here ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer>>(); ArrayList<TreeNode> list1=new ArrayList<TreeNode>(); ArrayList<TreeNode> list2=new ArrayList<TreeNode>(); if(root==null) return res; list1.add(root); while(!list1.isEmpty()) { ArrayList<Integer> list=new ArrayList<Integer>(); for(int i=0;i<list1.size();i++) { TreeNode node=list1.get(i); list.add(node.val); if(node.left!=null) list2.add(node.left); if(node.right!=null) list2.add(node.right); } res.add(list); ArrayList<TreeNode> tmp=list1; list1=list2; list2=tmp; list2.clear(); } reverse(res); return res; } public void reverse(ArrayList<ArrayList<Integer>> list) { int n=list.size(); int i=0; int j=n-1; while(i<j) { ArrayList<Integer> temp=list.get(i); list.set(i,list.get(j)); list.set(j,temp); i++; j--; } } }
[lintcode medium] Binary Tree Level Order Traversal II
原文:http://www.cnblogs.com/kittyamin/p/5104275.html