二叉树 前序遍历 后序遍历 中序遍历 C语言
将下列二叉树使用链式结构存储该二叉树,并按分别照“前序遍历”、“中序遍历”、“后续遍历”的顺序输出,打印的格式为“120340,120340,120340”。
以下为代码此树代码展示:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
const int MAX=50;
typedef struct Tree{ int data;
Tree *Left;
Tree *Right;
}Tree,*Bitree;
void print_DLR(Tree *p);
void print_LDR(Tree *p);
void print_LRD(Tree *p);
void create_Link(Bitree *T){
(T)=(Tree)malloc(sizeof(Tree));
(*T) -> data = 1;
(T) -> Left =(Tree)malloc(sizeof(Tree));
(T) -> Right = (Tree)malloc(sizeof(Tree));
(*T) -> Left -> data = 2;
(T) -> Left -> Left = (Tree)malloc(sizeof(Tree)); (T) -> Right -> Right = (Tree)malloc(sizeof(Tree)); (*T) -> Left -> Left -> data = 4;
(*T) -> Left -> Left -> Left = NULL;
(*T) -> Left -> Left -> Right = NULL;
(T) -> Left -> Right = (Tree)malloc(sizeof(Tree)); (*T) -> Left -> Right -> data = 5;
(*T) -> Left -> Right -> Left = NULL;
(T) -> Left -> Right -> Right = (Tree)malloc(sizeof(Tree));
(*T) -> Left -> Right -> Right -> data = 7;
(*T) -> Left -> Right -> Right -> Left = NULL;
(*T) -> Left -> Right -> Right -> Right = NULL;
(T) -> Right = (Tree)malloc(sizeof(Tree));
(*T) -> Right -> data = 3;
(T) -> Right -> Left = (Tree)malloc(sizeof(Tree)); (*T) -> Right -> Left -> data = 6;
(*T) -> Right -> Left -> Left = NULL;
(*T) -> Right -> Left -> Right = NULL;
(*T) -> Right -> Right = NULL; }
void print_DLR(Tree *p)//前序遍历,通过递归遍历二叉树,读者可以好好体会,先把二叉树想成最简单的形式,只有3个节点,就容易理解了
{ if§{ printf("%d “,p->data);
print_DLR(p->Left);
print_DLR(p->Right); }}
void print_LDR(Tree *p)//中序遍历
{ if §{ print_LDR(p->Left);
printf(”%d “,p->data);
print_LDR(p->Right); }}
void print_LRD(Tree *p)//后序遍历
{ if§{ print_LRD(p->Left);
print_LRD(p->Right);
printf(”%d “,p->data); }}
int main(){ Bitree p; create_Link(&p);
printf(“前序遍历: \n”); print_DLR§; printf(”\n"); printf(“中序遍历: \n”); print_LDR§; printf("\n"); printf(“后序遍历: \n”); print_LRD§; return 0;}
//代码有些地方乱码和缺少,以截图为准