判断二叉树是否平衡
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 everynode never differ by more than 1.
刚开始的时候老往AVL树上靠,后来才知道只需要两个子树的高度 never differ by more than 1,这个就好理解多了。代码如下:
bool balance(TreeNode* root, int& depth) { if (root == NULL) { depth = 0; return true; } int left_h = 0; int right_h = 0; if (!balance(root->right, right_h)) { return false; } if (!balance(root->left, left_h)) { return false; } if (right_h > left_h) { depth = right_h + 1; return (right_h - left_h) <= 1; } else { depth = left_h + 1; return (left_h - right_h) <= 1; } }