一:题目
二:代码思路
前提:
此题一开始给我们的先序遍历字符串其中的 # 是代表NULL,所以我们接收到的字符串是二叉树的每个节点及其的左右子树(不管子树为不为NULL),所以我们按照前序遍历的思路进行还原即可。
举个例子:
前序和中序在此篇博客(有递归展开图)详细有讲:递归实现 前/中/后序 遍历二叉树 的详细讲解-CSDN博客
1:我们接收到的前序遍历字符串,肯定要保存到一个字符串数组中
2:还原成二叉树,所以要定义一个二叉树节点的结构体。
3:创建一个CreteTree函数,用来根据前序遍历字符串还原二叉树
4:一个中序遍历的函数,用来将还原的二叉树进行中序遍历打印
三:代码解读
第一个函数:
解释:
二叉树的单个节点的结构体定义,还原成二叉树,前提肯定是需要二叉树节点的定义的。
第二个函数:
解释:
递归展开图:
在int*pi下面的是下标,红色的线是递,蓝色的线是归,线旁边的是该线所处的第几步。
不清晰,从上到下分开发:
上:
中:
下:
第三个函数:
解释:
前序和中序在此篇博客(有递归展开图)详细有讲:递归实现 前/中/后序 遍历二叉树 的详细讲解-CSDN博客
主函数:
解释:
按照第二步的代码思路所写。
四:总代码截图: