93. 平衡二叉树
给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。
您在真实的面试中是否遇到过这个题? Yes
样例
给出二叉树 A={3,9,20,#,#,15,7}
, B={3,#,20,15,7}
A) 3 B) 3 / \ \ 9 20 20 / \ / \ 15 7 15 7
二叉树A是高度平衡的二叉树,但是B不是
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { public: /* * @param root: The root of binary tree. * @return: True if this Binary tree is Balanced, or false. */ bool isBalanced(TreeNode *root) { // write your code here // write your code here return isSubTreeBalanced(root) != -1; } int isSubTreeBalanced(TreeNode *root) { if(root == NULL) { return 0; } int left = isSubTreeBalanced(root->left); int right = isSubTreeBalanced(root->right); if(left == -1 || right == -1 || abs(left - right) > 1) { return -1; } else { return (left > right ? left : right) + 1; } } };