题解 | #二叉树的深度#
二叉树的深度
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) {
// 如果当前结点下面没有东西了
// 叶结点 直接返回高度为0
if (pRoot == NULL )
return 0;
// 单纯的深度优先遍历
// 得到的值是左右子树的最大的高度
int left_height = TreeDepth(pRoot->left);
int right_height = TreeDepth(pRoot->right);
// 左右子树选更高的 再加上自己这一层后返回
int ans=left_height>right_height?left_height+1:right_height+1;
return ans;
}
};
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) {
// 如果当前结点下面没有东西了
// 叶结点 直接返回高度为0
if (pRoot == NULL )
return 0;
// 单纯的深度优先遍历
// 得到的值是左右子树的最大的高度
int left_height = TreeDepth(pRoot->left);
int right_height = TreeDepth(pRoot->right);
// 左右子树选更高的 再加上自己这一层后返回
int ans=left_height>right_height?left_height+1:right_height+1;
return ans;
}
};
题解 文章被收录于专栏
一遍做剑指offer 一边保存做题步骤 并附带详细注释哦