如題:
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.
平衡樹的定義就是對(duì)于每一個(gè)節(jié)點(diǎn)叮称,他的兩棵子樹的深度之差不能大于1-
思路:
這道題算的上是比較簡(jiǎn)單的了匪凉,思路大概就是兩層:- 遞歸判斷每個(gè)節(jié)點(diǎn)
- 具體判斷是每個(gè)節(jié)點(diǎn)的兩個(gè)子樹的深度比較
解題:
bool isBalanced(TreeNode* root) {
TreeNode *tempTreeNode = root;
if (tempTreeNode == NULL) {
return true;
}
if (abs(getMaxDeepth(tempTreeNode->left) - getMaxDeepth(tempTreeNode->right)) > 1) {
return false;
}
return isBalanced(tempTreeNode->left) && isBalanced(tempTreeNode->right);
}
int getMaxDeepth(TreeNode *treeNode) {
if (treeNode == NULL) {
return 0;
}
int left = getMaxDeepth(treeNode->left);
int right = getMaxDeepth(treeNode->right);
return (left > right ? left : right) + 1;
}