补全后序释放
补全 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