Problem
Solution
题意为,给定一棵二叉树,让你判定这棵二叉树是否是平衡二叉树(树种每个节点的左右子树高度差不超过1)。
这里复习一下树的高度的知识点,树的高度是指某一节点到叶子节点最长简单路径边的条数,因此叶子节点的高度为0。
那么我们就可以递归的来计算所有子树的高度,若在某节点不符合平衡二叉树的定义,则直接返回-1。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int check(TreeNode* root){
if(root==NULL) return 0;
int left=check(root->left);
int right=check(root->right);
if(left==-1||right==-1||abs(left-right)>1) return -1;
else return left>right?left+1:right+1;
}
bool isBalanced(TreeNode* root) {
return check(root)!=-1;
}
};