LeetCode104.二叉树的最大深度

二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

输入:root = [3,9,20,null,null,15,7] 输出:3 示例 2:

输入:root = [1,null,2] 输出:2


递归法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */

 /*
    递归法
 */
class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null){
            return 0;
        }

        int leftDepth = maxDepth(root.left);//递归遍历左子树
        int rightDepth = maxDepth(root.right);//递归遍历右子树
        return Math.max(leftDepth, rightDepth) + 1;//返回最大深度的子树

    }
}

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    //迭代法,使用层序遍历
    public int maxDepth(TreeNode root) {
        if(root == null) {
            return 0;
        }

        Deque<TreeNode> deque = new LinkedList<>();     
        //根 进入队列
        deque.offer(root);

        int depth = 0;//深度 = 层数
        while(!deque.isEmpty()) {
        //在每个循环中,首先记录当前队列中节点的数量size,这就是当前层的节点数。
            int size = deque.size();

            depth++;
            //遍历当前层的所有节点,依次从队列中取出一个节点。
            for(int i = 0; i < size; i++){
                TreeNode node = deque.poll();
                //对于取出的节点,如果它有左子节点,则将左子节点加入队列
                if(node.left != null){
                    deque.offer(node.left);
                }
                //如果它有右子节点,则将右子节点加入队列。
                if(node.right != null){
                    deque.offer(node.right);
                //这样,下一层的所有节点就被加入到了队列中,准备在下一次循环时被访问。
                }
            }
        }
        return depth;
    }
}

相关推荐

  1. LeetCode104 深度

    2024-04-03 03:48:01       38 阅读
  2. [leetcode] 104. 深度

    2024-04-03 03:48:01       43 阅读
  3. LeetCode104.深度

    2024-04-03 03:48:01       41 阅读
  4. Leetcode 104. 深度

    2024-04-03 03:48:01       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 03:48:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 03:48:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 03:48:01       82 阅读
  4. Python语言-面向对象

    2024-04-03 03:48:01       91 阅读

热门阅读

  1. mysql 存储过程示例

    2024-04-03 03:48:01       42 阅读
  2. 以下哪个变量不是指针类型

    2024-04-03 03:48:01       29 阅读
  3. LeetCode-41. 缺失的第一个正数【数组 哈希表】

    2024-04-03 03:48:01       42 阅读
  4. nginx输出日志配置与查看

    2024-04-03 03:48:01       38 阅读
  5. 论微服务架构及应用

    2024-04-03 03:48:01       37 阅读
  6. Memcached 教程之 Memcached replace 命令(七)

    2024-04-03 03:48:01       37 阅读
  7. 416. 分割等和子集(力扣LeetCode)

    2024-04-03 03:48:01       40 阅读
  8. 服务器配置Huggingface并git clone模型和文件

    2024-04-03 03:48:01       37 阅读
  9. 我国某高新技术企业遭境外黑客攻击

    2024-04-03 03:48:01       37 阅读
  10. 关于开源和闭源

    2024-04-03 03:48:01       40 阅读
  11. leetcode 2810.故障键盘

    2024-04-03 03:48:01       37 阅读