当前位置: 首页 > news >正文

免费注册发布信息网站长沙市app下载

免费注册发布信息网站,长沙市app下载,图书馆网站建设的要求,湖北省建设安全管理站网站二叉树的最大/最小深度 给定一个二叉树 root ,返回其最大/小深度。 二叉树的 最大/小深度 是指从根节点到最远/近叶子节点的最长路径上的节点数。 思路 求最大深度比较简单,我们先解决最大深度。 最大深度 递归 class Solution { public:int maxD…

二叉树的最大/最小深度

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

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

思路

求最大深度比较简单,我们先解决最大深度。

最大深度

递归

class Solution {
public:int maxDepth(TreeNode* root) {if(root == null)return 0;return max(maxDepth(root->left),maxDepth(root->right))+1;}
};

非常简单的一句代码。但是理解起来却有点难度。

终止条件为:root == null时返回0。

想一想,当结点为空时,此时高度是不存在的,因此返回0。

而递归的逻辑是:我们需要在根节点的左子树和右子树中选最大值,所以这里用max(x,y)返回。

当递归到空节点开始返回,一开始返回0,后面逐渐+1…,到根节点就得到这颗子树的高度。

层序遍历

class Solution {
public:int maxDepth(TreeNode* root) {queue<TreeNode*> qu;if(root != nullptr)qu.push(root);else return 0;int ans = 0;while(!qu.empty()){int size = qu.size();for(int i=0;i<size;i++){TreeNode* node = qu.front();qu.pop();if(node->left != nullptr)qu.push(node->left);if(node->right != nullptr)qu.push(node->right);}ans++;}return ans;}
};

这里用的是层序遍历,也即是广度优先,对每一层的结点进行遍历,然后同时ans++;

其实最大深度就是求的最大高度,因此有多少层可以遍历即高度多少。

最小深度

递归

  • 当root为空,则当前高度为0
  • 当root的左右子节点均为空,则当前为叶子结点,高度为1
  • 如果左右子节点有一个为空,则m_left和m_right必有一个为0,则直接返回两者相加+1
  • 最后一种情况则是左右子节点均不为空,则返回左右子树深度小的
class Solution {
public:int minDepth(TreeNode* root) {if(root == nullptr)return 0;if(root->left== nullptr && root->right ==nullptr)return 1;int m_left = minDepth(root->left);int m_right = minDepth(root->right);return root->left == nullptr || root->right ==nullptr ?m_left+m_right+1:min(m_right,m_left)+1;}
};

层序遍历

相比递归,BFS要简单的多,我们只需要找到第一个叶子节点,然后返回即可,找不到,没关系,继续遍历下一层。

class Solution {
public:int minDepth(TreeNode* root) {queue<TreeNode*> qu;if(root != nullptr)qu.push(root);else return 0;int ans = 1;while(!qu.empty()){int size = qu.size();for(int i=0;i<size;i++){TreeNode* cur = qu.front();qu.pop();if(cur->left == nullptr && cur->right == nullptr){return ans;}if(cur->left != nullptr)qu.push(cur->left);if(cur->right != nullptr)qu.push(cur->right);}ans++;}return ans;}
};

注意的是,ans一开始初始化为1,是因为根节点自身便带有高度,只有空结点会为0。

http://www.yayakq.cn/news/789578/

相关文章:

  • 做外卖有哪些网站有哪些久久建筑网怎么不好用
  • 做720效果的还有哪个网站微信文章转wordpress
  • wordpress托管站点wordpress 旅游插件
  • 想做一个能上传视频的网站怎么做百度医生
  • 网站标题特殊符号专业的app网站开发
  • 抖音关键词排名推广长沙网站优化步骤
  • 网站建设与制作模板网站开发 自动填写表单
  • 成都高端网站制作代理网址代码
  • 自己怎么做wap网站洪梅镇做网站
  • 国外开源建站系统猎头公司猎头
  • php网站开发需要什么软件黄陌陌网站怎么做
  • 免费建立自己的网站代码做博客用什么系统做网站好
  • 好看大方的企业网站源码.networdpress windows主题
  • 网站开发 教学大纲网站建设环境
  • 网站建设最新教程网站建设小程序公众号销售
  • 合肥手机网站制作建设便宜的域名购买
  • 网站基本配置一品在线视频观看
  • 那家网站做照片书好泸州作网站建设联系电话
  • 西安市建网站seo网址
  • 网站建设华威公司怎么样制作商城小程序费用
  • 专门做包包的网站渝中集团网站建设
  • 做一个展示型网站多少钱百度商标查询
  • 公司网站免备案百度搜索热度查询
  • 建设厅网站密码忘了怎么办产品推广策划方案怎么做
  • 个人网站页面网站顶端图片素材
  • 有哪些企业建设网站网站备案部门
  • 深圳网站建设-新奇网络wordpress旅游主题
  • 别人用我的备案信息做网站中国建筑集团
  • 网站仿制wordpress做ftp
  • 简单描述一下网站制作的流程自动升级wordpress失败 —— 请再试一次.