5.1.8 Balanced Binary Tree

来源:互联网 发布:源码交易平台 编辑:程序博客网 时间:2024/06/07 00:38

平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

 Notes: 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.  Solution: DFS. */   /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */

class Solution {public:    bool isBalanced(TreeNode *root) {        return solve(root) != -1;    }    int solve(TreeNode *root) {        if (root == NULL) return 0;        int left = solve(root->left);        int right = solve(root->right);        if (left == -1 || right == -1 || abs(left - right) > 1) return -1;        return max(left,right) + 1;    }};



0 0