【题目描述】
输入一棵二叉树,求该树的深度。
从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
测试二叉树,定义一个:
【解题】
1.递归(官方叫此方法为分治)
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if (!pRoot) return 0;
int lval = TreeDepth(pRoot->left);
int rval = TreeDepth(pRoot->right);
return max(lval, rval) + 1;
}
};
2.层次遍历
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if (!pRoot) return 0;
queue<TreeNode*> q;
q.push(pRoot);
int leve1 = 0;
while (!q.empty()) {
int sz = q.size();
//一次while走一层,走完一层level+1
while (sz--) {
auto node = q.front(); q.pop();
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
leve1 += 1;
}
return level;
}
};