二叉树的最大深度
int maxDepth(struct TreeNode* root){
//左右子树最大高度 + 根
int left, right;
if (root){
return (left = maxDepth(root->left) + 1) > (right = maxDepth(root->right) + 1) ?
left : right;
}
else{
return 0;
}
}
平衡二叉树
bool _isBalanced(struct TreeNode* root, int* cur){
if (root == NULL){
//当前根节点的高度
*cur = 0;
return true;
}
//下一层能够访问本层的left right
int left = 0, right = 0;
if (_isBalanced(root->left, &left) &&
_isBalanced(root->right, &right) &&
abs(left - right) < 2){
//以当前节点为根的树的最大深度
*cur = left > right ? left + 1 : right + 1;
return true;
}
else{
return false;
}
}
bool isBalanced(struct TreeNode* root){
//根的左右子树, 左右子树的左右子树 是否平衡
int dep = 0;
return _isBalanced(root, &dep);
}