删双孩子并归还内存

同一个 erase,这次删 17(左右都有孩子)。补全双孩子那一支:抄后继的值,再去右子树里把后继删掉。输出格式同上。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

整棵树全部释放

补全 free_tree:按后序(先左右孩子,再自己)把整棵树 drop 掉。补全后输出 alive。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

用引用参数删除

补全 erase_ref:参数是 BNode*& node,找到后直接给 node 赋值就能改掉父指针,不用 return。这里只处理「最多一个孩子」的情况。删掉 24(只有左孩子 23)后输出「剩几个没归还」和中序。 (本题用 g

开始练习 →

按升序插进去会怎样

第 1 步:按 1、2、3、4 的顺序插 第 2 步:插 1:又挂到最右边 第 3 步:插 2:又挂到最右边 第 4 步:插 3:又挂到最右边 第 5 步:插 4:又挂到最右边 第 6 步:长成一条线:查一次要走 4 层 第 7 步:换成

开始练习 →

退化成直线后查找多慢

BST 退化成一条直线之后,查找的复杂度变成【0】。

开始练习 →

平衡树要保证的是什么(C++)

各种平衡树(AVL、红黑树)要保证的是【0】。

开始练习 →

升序插入之后有多高

把 13、15、17、23、24 按升序依次插入。运行下面这段程序: #include <iostream> #include <string> #include <vector> using names

开始练习 →

换个顺序插入之后有多高

同样五个数,改成 17、24、15、13、23 的顺序插入: #include <iostream> #include <string> #include <vector> using namespace

开始练习 →

算出升序插入长成多高

补全 height:递归算树高(空树算 0)。这次算的是按升序插入的那棵。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

两种顺序的高度差多少

同一个 height,把两棵树都建出来:一棵按升序插、一棵按 17、24、15、13、23 插。输出两个高度之差(升序那棵减另一棵)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →