zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    BZOJ1307: 玩具 单调队列
    BZOJ4415: [Shoi2013]发牌 树状数组+二分
    BZOJ2456: mode
    BZOJ2982: combination Lucas
    BZOJ4195: [Noi2015]程序自动分析 并查集
    BZOJ2563: 阿狸和桃子的游戏 贪心
    BZOJ5281: [Usaco2018 Open]Talent Show 01分数规划+01背包
    一种斐波那契博弈(Fibonacci Nim)
    网易云深度剖析Kubernetes优化与实践
    360°透视:云原生架构演进
  • 原文地址:https://www.cnblogs.com/strive-19970713/p/11315628.html
Copyright © 2011-2022 走看看