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