思路(递归)
经典的递归题目,TreeDepth()这个函数返回一个树的深度。而树深等于左右子树中较深的那颗树的深度。因此给定树的深度=max(左子树深度,右子树深度)+1。而左子树深度=TreeDepth(左子树)。右子树深度=TreeDepth(右子树)。树空的时候要返回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==nullptr) return 0;
int lDepth = TreeDepth(pRoot->left);
int rDepth = TreeDepth(pRoot->right);
return max(lDepth, rDepth) + 1;
}
};