【目的】
1. 领会二叉链存储结构;掌握二叉树的各种基本运算和构造二叉树的算法设计。
2. 领会线索二叉树的构造过程以及构造线索二叉树的算法设计。
【内容及要求】编写程序实现两种方式建立二叉树:
编写一个程序btree.cpp,实现二叉树的基本运算,并在此基础上设计一个程序完成以下功能:(见教材P247,实验题1)
(1)由图7.33所示的二叉树创建对应的二叉链存储结构b,该二叉树的括号表示串为“A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”。
(2)输出二叉树b。(采用凹入表示法)
(3)输出’H’结点的左、右孩子结点值。
(4)输出二叉树b的高度。
(5)释放二叉树b。
(6)利用先序序列和中序序列重新构造该
二叉树(执行(5)的操作后再执行这一功能),
并以括号表示法输出该二叉树。
(7)对该二叉树进行中序线索化。
#include <stdio.h> #include <stdlib.h> #include <iostream> #define ElemType char #define BTNode TBTNode #define MaxSize 100 #define maxsize 100 typedef struct node { ElemType data; int ltag, rtag; //线索的标记 struct node *lchild; struct node *rchild; } BTNode; BTNode *pre; //全局变量的指针类型 char Pre[100]; char In[100]; int i = 0; void CreateBTree(BTNode *&b, char *str) //创建二叉树 { BTNode *St[MaxSize], *p; int top = -1, k, j = 0; char ch; b = NULL; ch = str[j]; while (ch != '