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,#,#,15,7},java
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:node
[ [15,7], [9,20], [3] ]
給定一棵二叉樹自底向下進行層序遍歷。算法
對樹進行層序遍歷,每層的結果放在結果鏈表的頭部。spa
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }
算法實現類.net
import java.util.*; public class Solution { public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> list = new LinkedList<>(); if (root == null) { return list; } Deque<TreeNode> cur = new LinkedList<>(); Deque<TreeNode> nxt = new LinkedList<>(); Deque<TreeNode> exc = new LinkedList<>(); TreeNode tmp; cur.add(root); while (!cur.isEmpty()) { List<Integer> layout = new ArrayList<>(); while (!cur.isEmpty()) { tmp = cur.remove(); if (tmp.left != null) { nxt.add(tmp.left); } if (tmp.right != null) { nxt.add(tmp.right); } layout.add(tmp.val); } exc = cur; cur = nxt; nxt = exc; list.add(0, layout); } return list; } }