假设自上而下按层次,自左至右输入每个结点的一个三元组(N,P, L/R)。其中N 为本结点的元素,P为其父结点,L 指示N为P 的左孩子,R指示N 为P的右孩子。试写一个建立二元树的左右链表示算法,并实现先根、中根、后根以及层序遍历算法。
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef int Elementtype;
struct node
{
struct node *lchild;
struct node *rchild;
Elementtype data;
};
typedef node *BTREE;
BTREE CreateTree();
int IsEmpty(BTREE root);
void Visit(int n);
void InOrder(BTREE root);
void PostOrder(BTREE root);
void PreOrder(BTREE root);
int main()
{
struct node *root;
BTREE tree[MAX];
root = CreateTree();
printf("中根遍历:\n");
InOrder(root);
printf("\n");
printf("先根遍历:\n");
PreOrder(root);
printf("\n");
printf("后根遍历:\n");
PostOrder(root);
printf("\n");
return 0;
}
BTREE CreateTree()
{
BTREE root;
B