自己写:把叶子摘掉
补全 remove:用递归删掉 val,返回新的根。这次删的是叶子 13。 删完之后输出中序的第一个。
自己写:让唯一的孩子顶上来
同一个 remove,这次删 15——它只有左孩子 13。 删完之后输出根的左边是几(13 应该顶了上来)。
自己写:右子树里最小的顶上来
同一个 remove,这次删 17——它左右都有孩子,是最难的一种。 删完之后输出新的根是几。
三种情况删完,中序还得是升序
同一个 remove,把三种情况连着删一遍:先删叶子 13、再删单孩子 15、最后删双孩子 17。 删完之后中序走一遍,把剩下的数按顺序拼起来输出(用 / 隔开)。
按从小到大的顺序插进去会怎样
把一批数按升序依次插进 BST,长出来的是【0】。
退化成直线之后查找变成多少
BST 退化成一条直线之后,查找的复杂度变成【0】。
平衡树要保证的是什么
各种平衡树(AVL、红黑树)要保证的是【0】。
升序插入之后有多高
把 13、15、17、23、24 按升序依次插入。运行下面这段程序: class BNode: def __init__(self, val): self.val = val self.left =
换个顺序插入之后有多高
同样五个数,改成 17、24、15、13、23 的顺序插入: class BNode: def __init__(self, val): self.val = val self.left = None
算出升序插入长成多高
补全 height:递归算树高(空树算 0)。 这次算的是按升序插入的那棵。