leetcode 107 二叉樹的層次遍歷 II
阿新 • • 發佈:2018-11-30
給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)
例如:
給定二叉樹 [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回其自底向上的層次遍歷為:
[ [15,7], [9,20], [3] ]
public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> result = new ArrayList<>(); List<Integer> temp = new ArrayList<>(); if(root == null) return result; int num = 1; int next = 0; Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); while(!queue.isEmpty()){ TreeNode node = queue.poll(); temp.add(node.val); num--; if(node.left != null){ queue.add(node.left); next++; } if(node.right != null){ queue.add(node.right); next++; } if(num == 0){ num = next; next = 0; result.add(0, temp); temp = new ArrayList<>(); } } return result; }