Fork me on GitHub

binary-tree-level-order-traversal

/**
* Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
* For example:
* Given binary tree{3,9,20,#,#,15,7},
* 3
* / \
* 9 20
* / \
* 15 7
* return its level order traversal as:
* [
* [3],
* [9,20],
* [15,7]
* ]
*/
这道题目,主要是我们是否知道树的层次遍历。
/**
 * Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
 * For example:
 * Given binary tree{3,9,20,#,#,15,7},
 *      3
 *    / \
 *   9  20
 *     /  \
 *    15   7
 * return its level order traversal as:
 * [
 *   [3],
 *   [9,20],
 *   [15,7]
 * ]
 */

import java.util.ArrayList;

public class Main37 {
    public static void main(String[] args) {
        TreeNode root = new TreeNode(3);
        root.left = new TreeNode(9);
        root.right = new TreeNode(20);
        root.right.left = new TreeNode(15);
        root.right.right = new TreeNode(7);
        System.out.println(Main37.levelOrder(root));
    }

    public static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode (int x){
            val = x;
        }
    }

    public static ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
        ArrayList<ArrayList<Integer>> list = new ArrayList<>();
        ArrayList<TreeNode> treeNodes = new ArrayList<>();

        if (root == null) {
            return list;
        }
        TreeNode head = null;
        treeNodes.add(root);
        while(!treeNodes.isEmpty()) {
            ArrayList<Integer> array = new ArrayList<>();
            ArrayList<TreeNode> newTree = new ArrayList<>();
            for (int i=0;i<treeNodes.size();i++) {
                head = treeNodes.get(i);
                array.add(head.val);
                if (head.left != null) {
                    newTree.add(head.left);
                }
                if (head.right != null) {
                    newTree.add(head.right);
                }
            }
            treeNodes = newTree;
            list.add(array);
        }
        return list;
    }
}

参考资料:https://blog.csdn.net/snow_7/article/details/51815787

posted @ 2019-08-07 15:33  gentleKay  阅读(153)  评论(0)    收藏  举报