Q:バイナリツリーが与えられると、バイナリツリーは、(リーフノードからルート、トラバース1レベルに、左から右へ)、トップトラバーサル順序に下から返さ
例えば:
バイナリ{3,9を与え、20は、#、#、15,7}、
3↵/20↵↵。9/15。7↵
上部層列に下からバイナリツリートラバーサルの結果は
↵[15,7]↵[9,20 ]、↵ [3]、↵]
あなたがわからない場合は、「{1、#2、3}」とは、その後、読んで
バイナリシーケンスの方法により、OJを:
バイナリツリートラバーサル配列の配列は、原則に従います」 #は、「終了位置がもう存在しないノードの下のパスで表します。
例えば:
1↵/↵23↵/4↵↵↵5。
上記バイナリシーケンスの結果である: "{1,2,3、#、#,. 4、#、#,. 5}。"
A:シーケンス0の位置にそれぞれ加算を横切ります
public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<TreeNode>();
ArrayList<ArrayList<Integer>> wrapList = new ArrayList<ArrayList<Integer>>();
if(root == null) return wrapList;
queue.offer(root);
while(!queue.isEmpty()){
int levelNum = queue.size();
ArrayList<Integer> subList = new ArrayList<Integer>();
for(int i=0; i<levelNum; i++) {
if(queue.peek().left != null) queue.offer(queue.peek().left);
if(queue.peek().right != null) queue.offer(queue.peek().right);
subList.add(queue.poll().val);
}
//每次将结果保存到下标为0的位置
wrapList.add(0, subList);
}
return wrapList;
}