首页 > 编程语言 >【C++】求二叉树的最大深度和最小深度

【C++】求二叉树的最大深度和最小深度

时间:2024-03-06 11:33:58浏览次数:27  
标签:right return C++ minDepth 二叉树 深度 root left

//求一颗二叉树的最大深度  求高度:后序遍历  求深度:前序遍历
int maxDepth(TreeNode* root) {
  return root ? 1 + max(maxDepth(root->left), maxDepth(root->right)) : 0;
}
//求一颗二叉树的最小深度(实质上是后序遍历)
int minDepth(TreeNode* root) {
  if (!root) return 0;
  //int leftDepth = minDepth(root->left);
  //int rightDepth = minDepth(root->right);
  //若左子树为空,右子树不为空
  if (!root->left && root->right) {
    return 1 + minDepth(root->right);
  }
  //若左子树不为空,右子树为空
  else if (root->left && !root->right) {
    return 1 + minDepth(root->left);
  }
  else {
    return 1 + min(minDepth(root->left), minDepth(root->right));
  }
}

标签:right,return,C++,minDepth,二叉树,深度,root,left
From: https://www.cnblogs.com/smartlearn/p/18056165

相关文章

  • 【C++】翻转二叉树(递归、非递归)
    //使用递归翻转二叉树TreeNode*reverseTree(TreeNode*root){if(!root)returnroot;swap(root->left,root->right);reverseTree(root->left);reverseTree(root->right);returnroot;}//使用队列翻转二叉树层序遍历TreeNode*invertTree(TreeNode*root)......
  • c++中nlohmann json的基本使用教程
    摘自:https://www.jb51.net/article/261677.htm 一.json.hpp库下载及安装1.1开源地址及引入方法nlohmannjson的开源项目地址,其中有对json使用方法的详细说明:https://github.com/nlohmann/json#serialization–deserialization对于我们项目中要使用nlohmannjson工具,只......
  • Visual Studio部署C++环境下OpenCV库
      本文介绍在VisualStudio2022中配置、编译C++计算机视觉库OpenCV的方法。1OpenCV库配置  首先,我们进行OpenCV库的下载与安装。作为一个开源的库,我们直接在其官方下载网站中进行下载即可;如下图所示,我们首先选择需要下载的操作系统。  随后,即可在弹出的新界面中自动开......
  • 代码随想录算法训练营第三十七天 | 738. 单调递增的数字,968.监控二叉树
    968.监控二叉树 已解答困难 相关标签相关企业 给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。 示例1:输入:[0,0,null,0,0]输出:1......
  • 基于c++的排雷小游戏二次开发
    源代码地址https://blog.csdn.net/weixin_45906253/article/details/121237647?spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-9-121237647-blog-129464051.235^v43^pc_blog_bottom_relevance_base7&......
  • (持续更新)c++引用
    引用的基本使用作用:给变量起别名语法:数据类型&别名=原名图示:代码://引用基本语法//数据类型&别名=原名inta=10;int&b=a;//创建引用//结果:a=10b=10cout<<"a="<<a<<endl;cout<<"b="<<b<<......
  • 257. 二叉树的所有路径c
    很好的题目,让我的sprintf旋转/***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*//***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*......
  • C++ 释放vector内存
    释放vector内存的方法有多种,具体取决于使用vector的方式以及释放内存的目的。下面列举几种常见的释放vector内存的方法:1、清空vector调用vector的clear()方法可以清空vector中的元素,但是并不会释放vector所占用的内存空间。这意味着,如果之后还需要往vector中添加元素,ve......
  • C++ 如何快速清空vector以及释放vector内存?
    1、为什么需要主动释放vector内存vector其中一个特点:内存空间只会增长,不会减小,援引C++Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元......
  • 110. 平衡二叉树c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/intmax(inti,intj){if(i>j)returni;returnj;}intheight(structTreeNode*root){......