110. 平衡二叉树
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/balanced-binary-tree/submissions/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目分析
注意高度和深度的区别
结点A的深度:从 根 到 结点A 的最长简单路径边的条数。(上到下 可以根左右)
结点A的高度:从 结点A 到 叶子结点 的最长简单路径边的条数。
此题还是后序遍历。(下到上 左右根)
注意:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
不是只有根节点,还包括其他的结点。
返回-1说明当前结点已经不是二叉平衡树,她的父节点就一定不是二叉平衡树。
class Solution {
public:
int getHeight(TreeNode* root){
if(root == nullptr) return 0;
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
//每个
if(leftHeight == -1) return -1;
if(rightHeight == -1) return -1;
if(abs(leftHeight - rightHeight) > 1){
return -1;
}else{
return 1 + max(leftHeight, rightHeight);
}
}
bool isBalanced(TreeNode* root) {
return getHeight(root) == -1 ? false : true;
}
};
此题用递归效率不高。