110. Balanced Binary Tree
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.
判断二叉树是否为平衡二叉树。
递归解法:
(1)如果二叉树为空,返回真
(2)如果二叉树不为空,如果左子树和右子树都是AVL树并且左子树和右子树高度相差不大于1,返回真,其他返回假
代码如下:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 bool isBalanced(TreeNode* root) { 13 int height; 14 return isAvl(root, height); 15 } 16 bool isAvl(TreeNode* pRoot, int & height) 17 { 18 if(pRoot == NULL) 19 { 20 height = 0; 21 return true; 22 } 23 int heightLeft; 24 bool resultLeft = isAvl(pRoot->left, heightLeft); 25 int heightRight; 26 bool resultRight = isAvl(pRoot->right, heightRight); 27 if(resultLeft && resultRight && abs(heightLeft - heightRight) <= 1) 28 { 29 height = max(heightLeft, heightRight) + 1; 30 return true; 31 } 32 else 33 { 34 height = max(heightLeft, heightRight) + 1; 35 return false; 36 } 37 } 38 };
时间: 2024-11-15 08:04:42