补全后序释放

补全 free_tree:先释放左右子树,再 delete 自己,每释放一个 alive 减一。补全后输出 alive。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

补全递归析构函数

补全 ~DNode():析构时顺手 delete 左右孩子。delete root; 之后输出还剩几个没归还。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

孩子数组表示数一数

一个节点可以有很多孩子时,常用 vector<KNode*> 存孩子。补全 count_nodes:递归数出总节点数。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

释放孩子数组表示的树

补全 free_all:先释放每个孩子那棵子树,再 delete 自己。补全后输出还剩几个没归还。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

用 unique_ptr 管孩子

补全:孩子指针换成 unique_ptr,建出总部和它的左右两个孩子(华北、华南)。root.reset() 之后输出一共析构了几个节点。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

前序遍历的顺序

前序遍历访问节点的顺序是【0】。(「根左右」表示先根、再左子树、再右子树。)

开始练习 →

中序遍历的顺序(C++)

中序遍历访问节点的顺序是【0】。

开始练习 →

后序遍历的顺序(C++)

后序遍历访问节点的顺序是【0】。

开始练习 →

三种序到底差在哪

第 1 步:按「根左右」走一遍 第 2 步:到了 1:先记下它 第 3 步:到了 2:先记下它 第 4 步:到了 4:先记下它 第 5 步:到了 5:先记下它 第 6 步:到了 3:先记下它 第 7 步:到了 6:先记下它 第 8 步:换顺

开始练习 →

前序走到第二个是谁

运行下面这段程序: #include <iostream> #include <queue> #include <string> #include <vector> using namespa

开始练习 →