随笔 --- 是否可以用左右子树结点数差来衡量二叉树是否平衡?

这道题目来自mooc上浙江大学由陈越 、何钦铭老师主讲的数据结构课程上。
题目如下:
随笔 --- 是否可以用左右子树结点数差来衡量二叉树是否平衡?_第1张图片
由于评论区关闭,在这里写下我自己的思路:

  1. 根据要求使用结点数来衡量是否是平衡时,极端条件是NR = 2NL 或者反之。

    如果构建二叉树时恰好构建为斜二叉树,会导致ASL变成最大。很显然也不满足树的高度为O(logn)。

    在使用结点数来定义平衡,我们不妨再给其加上一个限定条件,就是平衡的树的除去最低一层的结点后,时完美二叉树。这样就会有出现左右子树结点树是另一侧结点数二倍时,左右子树高度差不会超过1,同时因为有 2^k - 1 = N总。一种情况是,3NR + 1 = N总,NR = 1/3*(2^k + 2),所以满足树的高度为O(logn)。

  2. 当插入新元素使平衡树不在平衡时,因为我们多引入一个条件,在我看来重新调整为平衡变的非常困难。

你可能感兴趣的:(随笔,算法,数据结构)