题解 | #二叉树的深度#
二叉树的深度
http://www.nowcoder.com/practice/435fb86331474282a3499955f0a41e8b
/*
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,因为头节点多了一个层数
}
};
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,因为头节点多了一个层数
}
};