编程语言
首页 > 编程语言> > 算法-二叉树:平衡二叉树

算法-二叉树:平衡二叉树

作者:互联网

算法-二叉树:平衡二叉树

判断一棵树是不是平衡二叉树。平衡二叉树:每一个节点的左子树和右子树的高度差的绝对值不超过1。

思路解析:求二叉树的高度,只能从下到上去查找,所以需要后序遍历。和求深度不同。

//方法一:递归
int height(TreeNode* root){
    if(root == NULL) return 0;
    int leftHeight = height(root->left);
    if(-1 == leftHeight) return -1;
    int rightHeight = height(root->right);
    if(-1 == rightHeight) return -1;
    if(abs(leftHeight-rightHeight) > 1) return -1; //如果高度返回-1,表明这棵树不是平衡二叉树
    return 1+max(leftHeight,rightHeight);
}

方法二:迭代,采用后序遍历的统一迭代法,用迭代方法实现回溯算法效率很低,在此不做过多说明。

标签:rightHeight,return,int,算法,二叉树,leftHeight,平衡,root
来源: https://blog.csdn.net/weixin_60952096/article/details/122812339