BST 和普通二叉树的区别
二叉搜索树和普通二叉树,唯一的区别是【0】。
这棵树一共几个节点
把 17、24、15、13、23 依次插进一棵空的 BST。运行下面这段程序: #include <iostream> #include <string> #include <vector> using
第一步节点和插入
最终作品第一步:在 BST 结构里补全递归插入 ins。把 17、24、15、13、23 依次插进去,建好之后输出根的左边是几。 (本题用 g++ -std=c++17 -O0 编译。)
第二步接上查找
加上 contains,把两个查询结果拼起来输出:查 23(在)和查 20(不在),中间用 / 隔开。 (本题用 g++ -std=c++17 -O0 编译。)
第三步接上中序
加上中序遍历 inorder,把五个值按顺序拼起来输出(用 / 隔开)。插对了的话它一定是升序的。 (本题用 g++ -std=c++17 -O0 编译。)
第四步接上删除
加上 erase(删下来的节点要 delete),删掉有两个孩子的根 17,然后中序走一遍,把剩下的拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
交付查插删中序一起验收
这是这条路线的最终作品。把 BST 写完整(insert / contains / inorder / erase,外加析构时释放全部节点),然后一次验完五条:插完五个数,中序是 5 个;contains(23) 为真、contains(2
有序插入十万个怎么办
要把十万个已经排好序的数插进一个有序集合并反复查询,最稳妥的做法是【0】。
补写 BST 的插入
场景:实验机上 ~/work/bst/tree.cpp 读入一串整数,依次插进 BST,然后输出中序和先序两行。可 insert 还是空的。 任务:补全 insert(重复的值忽略)。make 编译,./tree < sample.t
有序数据插入太慢了
场景:~/work/bst/seq.cpp 先读 n 个数插进一棵普通 BST,再回答 q 个「在不在」的询问。数据是排好序的,n = 10^5 时要跑很久。 任务:改写 seq.cpp,让它在 1 秒内跑完(输出格式不变)。make 编译