剑指Offer:二叉树的深度
题目
解法一
简单的递归
代码如下:
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if (pRoot == nullptr) return 0;
return 1 + max({TreeDepth(pRoot->left), TreeDepth(pRoot->right)});
}
};
解法二
层次遍历,使用队列
代码如下:
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if (pRoot == nullptr) return 0;
queue<TreeNode*> que;
que.push(pRoot);
int deep = 0, tmp = 1;
while (!que.empty()) {
TreeNode* popNode = que.front();
que.pop();
--tmp;
if (popNode->left != nullptr) que.push(popNode->left);
if (popNode->right != nullptr) que.push(popNode->right);
if (tmp == 0) {
tmp = que.size();
++deep;
}
}
return deep;
}
};