安阳网站建设哪家公司好百度自动驾驶技术
平衡二叉树
力扣题目链接
题目描述
给定一个二叉树,判断它是否是 平衡二叉树 。
解题思路
把求二叉树最大深度的代码修改一下即可,在递归的时候判断两个子树的高度相差是否大于1,如果大于1就直接返回-1,说明该子树不平衡,如果两个子树中出现-1,也是直接返回,否则返回最大子树高度加1。
题解
class Solution {
public:bool isBalanced(TreeNode* root) {return func(root) == -1? false : true;}int func(TreeNode* root){if(root == NULL){return 0;}int n1 = func(root->left);int n2 = func(root->right);if(n1 == -1 || n2 == -1){return -1;}return abs(n1 - n2) > 1 ? -1 : 1 + max(n1, n2);}
};