LeetCode - 二分木レベル順トラバーサル-II

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;
    }

おすすめ

転載: www.cnblogs.com/xym4869/p/12517807.html