求二叉树最小深度,二叉树的深度为k,则二叉树最多有
二叉树的最大深度
知识点树
描述给定二叉树的最大深度。深度指的是树的根节点的任何叶节点路径上的节点数量。最大深度是所有叶节点的最大深度。(注意:叶节点是指没有子节点的节点。)
数据范围:树中每个节点的值满足
需求:时间复杂性
示例1输入:
{1,2}复制返回值:
2份副本
2示例输入:
{1,2,3,4,#,#,5}复制返回值:
3问题解法可以用递归和非递归的方法求解。非递归实际上是借鉴了层次遍历的方法。不再赘述,详见代码实现。
# include bits/stdc . h的递归实现
定义树结构
{
int val
struct TreeNode * left
struct TreeNode * right
TreeNode(int x) : val(x),left(nullptr),right(nullptr) {}
};
int maxDepth_r(TreeNode *root)
{
if (root==nullptr)
{
返回0;
}
int left=max depth _ r(root-left)1;
int right=max depth _ r(root-right)1;
return std:max(左,右);
}非递归实现
int maxDepth(TreeNode *root)
{
int level=0;
if (root==nullptr)
{
回报水平;
}
STD:queue TreeNode * q;
q . push(root);
而(!q.empty())
{
int n=q . size();
而(n - 0)
{
自动节点=q . front();
q . pop();
if (node- left!=nullptr)
{
q.push(节点向左);
}
如果(节点——对!=nullptr)
{
q.push(节点右移);
}
}
水平;
}
回报水平;
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。