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

  • 相关阅读:
    优化输出质数
    springboot嵌入式Servlet容器自动配置原理
    springboot中配置servlet三大组件
    springboot中springmvc的自定义配置
    springboot实现自定义国际化
    springboot错误处理机制及自定义错误处理
    SpringBoot对静态资源的映射规则
    docker中启动mysql容器
    Java函数式编程(一)
    java并发编程之美——高级篇(三)
  • 原文地址:https://www.cnblogs.com/strive-19970713/p/11315628.html
Copyright © 2011-2022 走看看