二叉树(六):二叉树的最大深度与最小深度

本文详细介绍了二叉树的深度与高度的概念,包括二者的区别和联系,并通过递归法、层次遍历和深度优先遍历探讨了如何求解二叉树的最大深度。此外,还讨论了N叉树的最大深度问题以及二叉树的最小深度计算,提供了相应的解题思路和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、二叉树的深度与高度

1、二叉树的深度

对于二叉树中的某个节点,其深度是从根节点到该节点的最长简单路径所包含的节点个数,是从上面向下面数的。因此访问某个节点的深度要使用先序遍历

2、二叉树的高度

对于二叉树中的某个节点其高度是从叶子节点到该节点的最长简单路径包含的节点个数,是从下面向上面数的。因此访问某个节点的高度需要使用后续遍历

3、二叉树的深度与高度辨析

每层节点的深度和高度如图所示:
在这里插入图片描述

4、二叉树的深度与高度的联系

一个二叉树根节点的高度就是这个二叉树的最大深度

二、二叉树的最大深度

  1. 二叉树的最大深度
    二叉树的最大深度可以通过递归法,层次遍历和深度优先遍历实现,但是最简单最容易的就是递归法

1、递归法

递归法利用了一个二叉树根节点的高度就是这个二叉树的最大深度这一特性,通过求跟根节点的高度求取二叉树的深度。

1)确定递归三要素

  1. 递归函数的返回值和参数:返回值为当前节点的最大深度,参数为当前节点
  2. 递归函数的单层逻辑:当前节点的最大深度 = 1 + 左子树或右子树的最大深度
  3. 递归函数的终止条件:当前节点为空时,当前节点最大深度为0

2)递归方法代码(其实就是求根节点高度的代码)

class Solution {
   
public:
	//递归参数及返回值
    int maxDepth(TreeNode* root) {
   
    
    	//递归终止条件
        if(root == nullptr) return 0;
        
        //单层递归逻辑
        int leftdepth = maxDepth(root->left);	/左
        int rightdepth = maxDepth(root->right);	/右
        return 1 + max(leftdepth, rightdepth);	/中
    }
};

2、层次遍历

层次遍历的思路很简单,每遍历一层,就让maxdepth + 1,当遍历终止时,返回maxdepth即可。

1)层次遍历代码

class Solution {
   
public:
    int maxDepth(TreeNode* root) {
   
        queue<TreeNode*> que;
        int maxdepth = 0;
        if(root == nullptr) return maxdepth;
        

        que.push(root);
        while(!que.empty
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值