补写层序遍历
场景:实验机上 ~/work/tree/level.cpp 读入一棵二叉树(格式见文件开头的注释),要按层序输出所有节点的值,但 level_order 还是空的。 任务:补全 level_order。make 编译,./level <
十万层的树求深度
场景:~/work/tree/depth.cpp 读入一棵树(每个节点给出父节点),用递归求最大深度。普通的树没问题,可一条十万层的「链」一跑就崩溃——实验机的栈只有 1 MB(check 用 ulimit -s 1024 运行你的程序)。
实现前缀树的插入和计数
场景:~/work/tree/trie.cpp 按指令操作一棵前缀树:add 单词 插入一个词,cnt 前缀 输出以它开头的词有几个(重复插入的词按次数算)。insert 和 count_prefix 还没写。 任务:补全这两个函数(节点里
修好中序遍历
场景:~/work/tree/inorder.cpp 读入一棵二叉树,按中序输出。可它输出的顺序不对。 任务:修好 inorder。make 编译后用 sample.txt 自测。check 会用随机树对拍。 可操作范围:只在分给你的这台实
析构漏掉的子树
场景:~/work/tree/free.cpp 建一棵树、输出节点总数,最后释放整棵树。输出是对的,可 Makefile 带了内存检查,程序一结束就报内存泄漏。 任务:修好 free_tree,让整棵树一个不漏地释放。make 编译后运行不
二叉搜索树的规矩是什么
二叉搜索树之所以叫「搜索」树,是因为它规定【0】。
BST 里通常不放什么
第 1 步:一棵二叉搜索树 第 2 步:左边整棵都比 50 小 第 3 步:右边整棵都比 50 大 第 4 步:每棵子树也守这条规矩 50 30 70 20 60 标准的二叉搜索树里,通常不允许出现【0】。
怎么判断它是不是 BST
判断一棵树是不是合法的 BST,最省事的办法是【0】。
这条规矩管到哪一层
「左小右大」这条规矩要求的是【0】。
BST 最擅长的一件事
二叉搜索树最擅长的是【0】。