目录
题目描述
设一棵二叉树各结点的值互不相同,其先序遍历和中序遍历分别存于两个一维数组A[1...n]和B[1...n]中,试编写算法建立该二叉树的二叉链表。
来源:王道p143.6
解题思路
和手算类似题目一样的思想,在中序中找到先序的第一个结点,即为根节点。然后在先序和中序序列中划分出左右子树的先序中序序列,递归调用。
宏定义
#define TElemType char
二叉树定义
typedef struct TreeNode{
TElemType val;
struct TreeNode*left;
struct TreeNode*right;
}*Tree,TreeNode;
[注] 上述宏定义和结构体定义是答题时要写的答案,并不是代码实现时的定义,代码实现稍有不同,感兴趣可去“help.h”中查看。
实现函数
TreeNode* WD_143_6_re(char *pre,char *vin,int preL,int preR,int vinL,int vinR){
if(preL>preR||vinL>vinR) return NULL; //子区间的范