首页 > 代码库 > LeetCode:Balanced Binary Tree

LeetCode: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 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 }

 

LeetCode:Balanced Binary Tree