算法打卡Day20_leetcode _104. 二叉树的最大深度

简介: 算法打卡Day20_leetcode _104. 二叉树的最大深度

Leetcode原题

104. 二叉树的最大深度

20200401134307494.png

思路

二叉树深度就是 跟节点到叶子节点的 最大距离 。即根节点到最远叶子节点的最长路径上的节点数。

方法一 递归

 public int maxDepth(TreeNode root){
        if (root ==null){
            return 0;
        }
        return Math.max(maxDepth(root.left),maxDepth(root.right))+1;
    }

方法二 利用队列

利用队列,每次将队列中的节点取出来扩展,有左叶子树和右叶子树就添加入队列中。

这样能保证每次拓展完的时候队列里存放的是当前层的所有节点,即我们是一层一层地进行拓展,最后我们用一个变量来维护拓展的次数,该二叉树的最大深度即为ans.

public int maxDepth(TreeNode root){
        if (root ==null){
            return 0;
        }
        Queue<TreeNode> queue= new LinkedList<>();
        queue.offer(root);
        int depth = 0;
        while (!queue.isEmpty()){
            /**
             * size用来记录本层级的结点是否处理完
             */
            int size= queue.size();
            while (size>0){
                TreeNode node= queue.poll(); //出队
                if (node.left!=null){
                    queue.offer(node.left);
                }
                if (node.right!=null){
                    queue.offer(node.right);
                }
                size--;
            }
            depth++;
        }
        return depth;
    }

完整代码

import java.util.LinkedList;
import java.util.Queue;
/**
 * @PackageName: cn.study.sufa.Day19
 * @author: youjp
 * @create: 2022-05-06 22:09
 * @description: leecode 104 二叉树最大深度
 * @Version: 1.0
 */
public class Solution {
    public static void main(String[] args) {
        TreeNode node= new TreeNode(3);
        node.left=new TreeNode(9);
        node.right= new TreeNode(20);
        node.right.left =new TreeNode(15);
        node.right.right =new TreeNode(7);
        Solution s=new Solution();
        System.out.println(s.maxDepthWithQueue(node));
    }
    //方法一、递归 求跟节点到最远叶子节点最长路径上的节点数
/*    public int maxDepth(TreeNode root){
        if (root ==null){
            return 0;
        }
        return Math.max(maxDepth(root.left),maxDepth(root.right))+1;
    }*/
    //方法2.递归
    public int maxDepthWithQueue(TreeNode root){
        if (root ==null){
            return 0;
        }
        Queue<TreeNode> queue= new LinkedList<>();
        queue.offer(root);
        int depth = 0;
        while (!queue.isEmpty()){
            /**
             * size用来记录本层级的结点是否处理完
             */
            int size= queue.size();
            while (size>0){
                TreeNode node= queue.poll(); //出队
                if (node.left!=null){
                    queue.offer(node.left);
                }
                if (node.right!=null){
                    queue.offer(node.right);
                }
                size--;
            }
            depth++;
        }
        return depth;
    }
}
class TreeNode{
    int val;
    TreeNode left ;
    TreeNode right;
    public TreeNode(){}
    public TreeNode(int val){
        this.val =val;
    }
    public TreeNode (int val,TreeNode left,TreeNode right){
        this.val =val;
        this.left= left;
        this.right =right;
    }
}

有兴趣的老爷,还可以关注我的公众号【一起收破烂】,回复【006】获取 最新java面试资料以及简历模型120套哦~

相关文章
|
3天前
|
机器学习/深度学习 JSON 算法
二叉树遍历算法的应用场景有哪些?
【10月更文挑战第29天】二叉树遍历算法作为一种基础而重要的算法,在许多领域都有着不可或缺的应用,它为解决各种复杂的问题提供了有效的手段和思路。随着计算机科学的不断发展,二叉树遍历算法也在不断地被优化和扩展,以适应新的应用场景和需求。
8 0
|
21天前
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
21 2
|
28天前
【LeetCode 31】104.二叉树的最大深度
【LeetCode 31】104.二叉树的最大深度
18 2
|
28天前
【LeetCode 29】226.反转二叉树
【LeetCode 29】226.反转二叉树
15 2
|
28天前
【LeetCode 28】102.二叉树的层序遍历
【LeetCode 28】102.二叉树的层序遍历
13 2
|
27天前
|
存储 算法 关系型数据库
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
这篇文章主要介绍了多路查找树的基本概念,包括二叉树的局限性、多叉树的优化、B树及其变体(如2-3树、B+树、B*树)的特点和应用,旨在帮助读者理解这些数据结构在文件系统和数据库系统中的重要性和效率。
16 0
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
|
27天前
|
存储 算法 搜索推荐
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
这篇文章主要介绍了顺序存储二叉树和线索化二叉树的概念、特点、实现方式以及应用场景。
17 0
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
|
1月前
|
存储 算法
【二叉树】—— 算法题
【二叉树】—— 算法题
【二叉树】—— 算法题
|
27天前
|
存储 算法
数据结构与算法学习十六:树的知识、二叉树、二叉树的遍历(前序、中序、后序、层次)、二叉树的查找(前序、中序、后序、层次)、二叉树的删除
这篇文章主要介绍了树和二叉树的基础知识,包括树的存储方式、二叉树的定义、遍历方法(前序、中序、后序、层次遍历),以及二叉树的查找和删除操作。
22 0
|
28天前
【LeetCode 43】236.二叉树的最近公共祖先
【LeetCode 43】236.二叉树的最近公共祖先
15 0