题目
- Balanced Binary Tree
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as:
a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
Example 1:
Given the following tree [3,9,20,null,null,15,7]:
3
/
9 20
/
15 7
Return true.
Example 2:
Given the following tree [1,2,2,3,3,null,null,4,4]:
1
/
2 2
/
3 3
/
4 4
思路
题目分析:通过getResult先序遍历二叉树的节点,同时记录节点的高度,一旦发现一个节点的左右子树高度差超过1,就可以判断该二叉树是非平衡的。
class Solution {
public:
int getResult(TreeNode* root,bool &flag) {
if(flag==false)
return -1;
if(root==NULL)
return 0;
int left = getResult(root->left,flag);
int right = getResult(root->right, flag);
if ((left - right) > 1 || (right - left) > 1)
flag = false;
return max(left, right)+1;
}
bool isBalanced(TreeNode* root) {
bool flag = true;
if (root == nullptr)
return true;
int x = getResult(root, flag);
return flag;
}
};