/*
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) {
    //求二叉树的深度就是典型的树形dp套路的使用,这个套路百试不厌,几乎可以解决二叉树所有的题目
        //首先我们需要左子树提供他的高度信息
        //其次我们需要右子树提供其高度信息
        //最后头结点要整合信息返回头结点的高度信息
        if(pRoot==NULL)
            return 0;//base case
        int leftData=TreeDepth(pRoot->left);//左树高度信息给我
        int rightData=TreeDepth(pRoot->right);//右树高度信息给我
        int rootData=leftData>rightData?leftData:rightData;//头结点同样需要信息
        return rootData+1;//根节点的高德要+1,因为头节点多了一个层数
    }
};