交付:查、插、删、中序一起验收
这是这条路线的最终作品。把 BNode、insert、find、中序、remove 全写出来,然后一次验完五条: 插完五个数,节点是 5 个 find(23) 是真、find(20) 是假 中序是 1
阅读更多 →
第四步:接上删除(最难的那种)
加上 remove,删掉有两个孩子的根 17,然后中序走一遍,把剩下的拼起来输出。
阅读更多 →
第三步:接上中序
加上中序遍历,把五个值按顺序拼起来输出(用 / 隔开)。 插对了的话它一定是升序的。
阅读更多 →
第二步:接上查找
加上 find,把两个查询结果拼起来输出:查 23(在)和查 20(不在),中间用 / 隔开。
阅读更多 →
第一步:节点类和插入
最终作品第一步:写出 BNode 和 insert,把 17、24、15、13、23 依次插进去。 建好之后输出根的左边是几。
阅读更多 →
这棵树一共几个节点
运行下面这段程序: class BNode: def __init__(self, val): self.val = val self.left = None
阅读更多 →
BST 和普通二叉树的唯一区别
二叉搜索树和普通二叉树,唯一的区别是【0】。
阅读更多 →
一个够用的 BST 至少要有哪几样
手写一棵够用的二叉搜索树,至少要有【0】。
阅读更多 →
某个值排第几
补全 rank:返回 val 在这棵树里从小到大排第几(最小的算第 1),不在返回 0。 这次问的是 17 排第几。
阅读更多 →
某个区间里有几个
补全 count_range:返回落在 [lo, hi] 区间内(含两端)的节点个数。 这次数的是 15 到 23。
阅读更多 →