• 104. 二叉树的最大深度


    1. 使用DFS解法

    递归计算每颗字数的最大深度

    时间O(n)(每个节点都要被遍历一次),空间O(h)(与递归深度有关,递归深度又与二叉树高度相关)

    public int maxDepth(TreeNode root) {
            if (root==null) return 0;
            int left = maxDepth(root.left);
            int right = maxDepth(root.right);
            // 比较左右子树的最大深度,并加上根节点的高度
            return Math.max(left,right)+1;
        }

    2. 使用BFS解法

    广度优先遍历的方案,我们使用2层循环,一个循环控制整棵树所有节点是否遍历完比

    第二层循环控制每一层的节点是否遍历完毕。

    时间O(n)(每个元素都遍历一遍),空间O(m)(m为整棵树节点最对的一层的节点数,最坏情况下完全二叉树叶子节点个数n/2)

        public int maxDepth(TreeNode root) {
            if (root==null) return 0;
            Deque<TreeNode> queue = new LinkedList<TreeNode>();
            queue.add(root);
            int res=0;
            while(!queue.isEmpty()){
                int size = queue.size();
                // 获取当前队列中的节点个数,即获取整棵树每一层的节点个数
                while(size>0){
                    TreeNode temp = queue.poll();
                    if(temp.left!=null) queue.add(temp.left);
                    if(temp.right!=null) queue.add(temp.right);
                    // 本层节点-1
                    size--;
                }
                // 每扫描完一层需要将相应深度+1
                res++;
            }
            return res;
        }
    争取早日不再是一只菜鸡
  • 相关阅读:
    Vue源码解析
    开发调试的几个小技巧
    C#课后小作业
    C#随堂
    C#是数据类型
    插眼
    SQL基本的45题
    SQL创建数据库、建表、填入内容
    T-SQL语句基础
    SQL基本数据类型等
  • 原文地址:https://www.cnblogs.com/jchen104/p/14637081.html
Copyright © 2020-2023  润新知