递归深度优先遍历计算树深度。
/*
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){
return 0;
}
int max = 0;
find(pRoot,max,0);
return max;
}
void find(TreeNode* pRoot,int &max, int deep){
deep++;
if(pRoot->left){
find(pRoot->left,max,deep);
}
if(pRoot->right){
find(pRoot->right,max,deep);
}
if(!pRoot->left && !pRoot->right){
if(deep > max){
max = deep;
}
}
}
};