这道题目来自mooc上浙江大学由陈越 、何钦铭老师主讲的数据结构课程上。
题目如下:
由于评论区关闭,在这里写下我自己的思路:
-
根据要求使用结点数来衡量是否是平衡时,极端条件是NR = 2NL 或者反之。
如果构建二叉树时恰好构建为斜二叉树,会导致ASL变成最大。很显然也不满足树的高度为O(logn)。
在使用结点数来定义平衡,我们不妨再给其加上一个限定条件,就是平衡的树的除去最低一层的结点后,时完美二叉树。这样就会有出现左右子树结点树是另一侧结点数二倍时,左右子树高度差不会超过1,同时因为有 2^k - 1 = N总。一种情况是,3NR + 1 = N总,NR = 1/3*(2^k + 2),所以满足树的高度为O(logn)。
-
当插入新元素使平衡树不在平衡时,因为我们多引入一个条件,在我看来重新调整为平衡变的非常困难。