递归深度优先遍历计算树深度。

/*
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;
            }
        }
    }
};