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

    }
};