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

网站前后端分离怎么做小微宝安网站建设

网站前后端分离怎么做,小微宝安网站建设,做亚马逊网站需要租办公室吗,零基础学室内设计104. 二叉树的最大深度 题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例: 输入:root [3,9,20,null,null,15,7] 输出:3 思路 用递归来做&#xff0c…

104. 二叉树的最大深度

题目

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

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

示例:

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

思路

用递归来做,其中心思路是,一个结点的最大深度相当于其左右子树的最大深度加一,这就可以利用递归求得子树深度了。

接下来是递归三部曲:

1. 首先确定返回值和参数,返回值肯定是深度,参数则是二叉树结点;

2. 其次确定递归终止条件,也就是当结点为空时返回0;

3. 最后明确每一次递归要做的事,其实就是按找中心思路返回最大深度。

代码

class Solution {
public:int getdepth(TreeNode* node) {if (node == NULL) return 0;int leftdepth = getdepth(node->left);int rightdepth = getdepth(node->right);int depth = 1 + max(leftdepth, rightdepth);return depth;}int maxDepth(TreeNode* root) {return getdepth(root);}
};

111. 二叉树的最小深度

题目

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

思路

这道题的中心思路跟上面的一样,都是用递归法,每次取左右子树最小深度加一,不过这里有一个易错点,那就是深度要从叶子结点开始算,所以当遇到一个只有一个子树的结点时,不能记录空的一边,而是递归返回有子树的那边的深度。

代码

class Solution {
public:int getdepth(TreeNode* node) {if (node == NULL) return 0;int leftdepth = getdepth(node->left);int rightdepth = getdepth(node->right);if (node->left == NULL && node->right != NULL)return 1 + rightdepth;if (node->left != NULL && node->right == NULL)return 1 + leftdepth;int depth = 1 + min(leftdepth, rightdepth);return depth;}int minDepth(TreeNode* root) {return getdepth(root); }
};

222. 完全二叉树的结点个数

题目

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

普通解法

管他完不完全,反正也是二叉树,既然是二叉树,之前学过的递归和非递归遍历都可以用来求结点数,只需要把原来的结点值入vector变成计数器加一,下面是用非递归前序遍历来做的:

class Solution {
public:int countNodes(TreeNode* root) {stack<TreeNode*> st;int num = 0;if (root != NULL) st.push(root);while (!st.empty()) {TreeNode* cur = st.top();st.pop();num++;if (cur->right) st.push(cur->right);if (cur->left) st.push(cur->left);}return num;}
};

完全二叉树解法

完全二叉树可以不断拆分为一个满二叉树和一个完全二叉树,每一个满二叉树可以一边往下走一边求深度,如果左右子树的深度相同,就可以直接计算出这个二叉树的结点个数,因为满二叉树的结点数等于2的深度次方减一,如果不是满二叉树,就递归求解这个完全二叉树的根节点的左右子树的结点数再加一。

class Solution {
public:int countNodes(TreeNode* root) {if (root == NULL) return 0;TreeNode* left = root->left;TreeNode* right = root->right;int leftDepth = 0, rightDepth = 0;while (left) {left = left->left;leftDepth++;}while (right) {right = right->right;rightDepth++;}if (leftDepth == rightDepth) {return (2 << leftDepth) - 1;}return countNodes(root->left) + countNodes(root->right) + 1;}
};

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

相关文章:

  • h5响应式网站建设方案怎么写交易猫钓鱼网站制作教学
  • 惠州网站开发公司电话seo入门教程网盘
  • 箱包设计网站龙口有没有做网站的
  • 机关网站建设考核测评总结长沙城市建筑工程有限公司
  • 什么是网站改版wordpress 文章分类id
  • 如何修改网站源文件网络工程师报名时间2022
  • 成都手机微信网站建设报价哪个协会要做网站建设啊
  • 上海建设工程管理网站优化网络的软件
  • 仪征市企业网站建设公司服务器网站慢的原因
  • 白云区建网站墨猴seo排名公司
  • 网站开发动态wordpress 早期文章
  • 怎么学做网站制作如何组建网站开发团队
  • 北京律师网站建设平台整合营销传播之父
  • 旅游网站建设的目标是什么意思wordpress国外主题加载慢
  • 网站开发规格深圳市住房与建设局实名制网站
  • 网站开发接单网站什么是响应式的网站
  • 凤岗镇仿做网站网站建设 国家技术规范
  • 企业做pc网站需要什么资料网站换域名了怎么做301重定向
  • 网站域名邮箱怎么注册网站建立不安全
  • 购物 网站建设的市场分析seo自动优化软件下载
  • 搭建正规网站深圳企业网站改版
  • 中国设计师个人网站徐州网站优化推广
  • 江苏高校品牌专业建设网站如何推广自己的店铺?
  • 做任务挣钱的网站聚教学网站怎么做
  • 做一个综合性的网站多少钱企业策划推广
  • 重庆市建设工程交易中心网站优化seo是什么意思
  • 有没有做网站的教程网站内容怎么做备份
  • 做vue用哪个网站西安wordpress开发
  • 苏州网站开发外包公司全国门户网站有哪些
  • 做网站ps能用美图秀秀么广东今科网站建设