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则非,如果小于等于1则是,递归判断左右子树。
class Solution { public: bool isBalanced(TreeNode *root) { if(!root){ return true; } isBalancedTree = true; calDepth(root); return isBalancedTree; } int calDepth(TreeNode* root){ if(!isBalancedTree){ return 0; } if(!root->left && !root->right){ return 1; } int left = 0; int right = 0; if(root->left){ left = calDepth(root->left); } if(root->right){ right = calDepth(root->right); } if(abs(left-right) > 1){ isBalancedTree = false; } return max(right,left)+1; } bool isBalancedTree; };
原文地址:http://blog.csdn.net/zhurui_idea/article/details/26169133