题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
求取节点的深度(节点左子树高度 右子树高度中较大的 + 1)。
求取节点的深度判断根节点左右子树的深度,高度差超过1,则不平衡。
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot){
if(pRoot == NULL)
return true;
int l = height(pRoot->left);
int r = height(pRoot->right);
if(IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right)){
int diff = l - r;
if(abs(diff)<=1)
return true;
}
return false;
}
int height(TreeNode* pRoot){
if(pRoot == NULL)
return 0;
int l = height(pRoot->left);
int r = height(pRoot->right);
return 1+(l>r ? l : r);
}
};
题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
/*
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;
int l = TreeDepth(pRoot->left);
int r = TreeDepth(pRoot->right);
return 1+(l > r ? l : r);
}
};