输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。
数据范围:
进阶:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n)
假如输入的用例为{1,2,3,4,5,#,6,#,#,7},那么如下图:
示例1输入:
{1,2,3,4,5,#,6,#,#,7}
返回值:
4
示例2
输入:
{}
返回值:
0
解法1
class Solution {
public:
//通过递归求解
int TreeDepth(TreeNode* pRoot) {
if (nullptr == pRoot)return 0;
return max(1+TreeDepth(pRoot->left), 1+TreeDepth(pRoot->right));
}
};
解法2
class Solution {
public:
//通过队列进行索引
int TreeDepth(TreeNode* pRoot) {
if (nullptr == pRoot)return 0;
TreeNode* pFront, *pHead = pRoot;
queue queue;
queue.push(pRoot);
int depth = 0;
while (!queue.empty()) {
int count = 0;
++depth;
while (count < queue.size()) {
count++;
pFront = queue.front();
queue.pop();
if (pFront->left != nullptr)
queue.push(pFront->left);
if (pFront->right != nullptr)
queue.push(pFront->right);
}
}
return depth;
}
};



