要求:判断一棵树是否是平衡二叉树
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 struct TreeNode {
2 int val;
3 TreeNode *left;
4 TreeNode *right;
5 TreeNode(int x): val(x),left(NULL), right(NULL) {}
6 };
7
8 int maxTreeDepth(TreeNode *root) //先求树的深度
9 {
10 if (NULL == root)
11 return 0;
12 int lval = maxTreeDepth(root->left);
13 int rval = maxTreeDepth(root->right);
14 return 1 + (lval > rval ? lval:rval);
15 }
16 bool isBalanced(TreeNode *root)//根据树的深度再来判断是否是平衡树
17 {
18 if(NULL == root)
19 return true;
20 int diff = maxTreeDepth(root->left) - maxTreeDepth(root->right);
21 if (diff < -1 || diff > 1)
22 return false;
23 return isBalanced(root->left) && isBalanced(root->right);
24 }