C++
思路:首先需要明确二叉树的深度是怎么求的。二叉树的深度定义为:树中结点所在的层次中最大的层数。
考虑递归的思想,二叉树的深度就等于左右子树中层数(深度)最大的值+1。解释如下图
将树看作根节点与其左右子树,再在子树中重新划分根节点和左右子树
然后认为空子树的层数为0,向上推层数
代码实现如下:
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
int TreeDepth(TreeNode* pRoot) {
if(pRoot==NULL)
{
return 0; //对于空子树,深度为0
}
else
{//递归计算左右子树的深度,取较大的值+1即为根节点的深度
if(TreeDepth(pRoot->left)>TreeDepth(pRoot->right))
{
return TreeDepth(pRoot->left)+1;
}
else
{
return TreeDepth(pRoot->right)+1;
}
}
}
};
京公网安备 11010502036488号