给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树
[3,9,20,null,null,15,7]
,3 / \ 9 20 / \ 15 7
既然提到了深度的问题那就不得不先提到最大深度的获取,这道题在leetcode上面也有,不过大家就按字面意思理解很清晰的明白它无非就是让你求一个二叉树最大深度。
首先,先给大家排一个坑。这个坑就属于很典型的自己编译和OJ的差异——也就是说本地调试无误,但是上机超时的问题。
//这一种方法在OJ上不存在超时
int maxDepth(TreeNode *p)
{
if(!p)
return 0;
int lengthl = maxDepth(p->left)+1;
int lengthr = maxDepth(p->right)+1;
return lengthl>lengthr?lengthl:lengthr;
}
//下面这种看似无敌简洁逻辑的写法,上了OJ就GG啦
int maxDepth(TreeNode *p)
{
if(!p)
return 0;
return maxDepth(p->left)>maxDepth(p->right)?:maxDepth(p->left)+1:maxDepth(p->right)+1;
}
<