Algoritmo de estructura de datos de lenguaje tipo C para construir un árbol binario único después del orden y luego el orden y luego atravesar el orden previo, el orden medio y el orden posterior por separado

Este código puede ejecutarse normalmente, con los resultados adjuntos.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char TElemType;
typedef struct BiNode
{
    char data;
    struct BiNode *lchild,*rchild;
}BiNode,*BiTree;

enum Status{ERROR,OK};
BiTree Creat(int n, char *mid, char *last)///中序后序建立二叉树
{
    if(n==0)
        return NULL;
    BiTree T;
    T = (BiNode *)malloc(sizeof(BiNode));
    T->data = last[n-1];
    int i;
    for(i=0;i<n;i++)
        if(last[n-1] == mid[i])
            break;
    T->lchild = Creat(i, mid, last);
    T->rchild = Creat(n-i-1, mid+i+1, last+i);
 
    return T;
}
 
///先序遍历
Status PreOrderTraverse(BiTree T)  //先序
{
	if(T==NULL)
		return OK;
	else
	{
		printf("%c  ",T->data);  //访问根节点
		PreOrderTraverse(T->lchild);  //递归遍历左子树
		PreOrderTraverse(T->rchild);  //递归遍历右子树
	}
}
 

Status InOrderTraverse(BiTree T)  //中序
{
	if(T==NULL)
		return OK;
	else
	{
		InOrderTraverse(T->lchild);  //递归遍历左子树
		printf("%c  ",T->data);  //访问根节点
		InOrderTraverse(T->rchild);  //递归遍历右子树
	}
}

Status PostOrderTraverse(BiTree T)  //后序
{
	if(T==NULL)
		return OK;
	else
	{
		PostOrderTraverse(T->lchild);  //递归遍历左子树
		PostOrderTraverse(T->rchild);  //递归遍历右子树
		printf("%c  ",T->data);  //访问根节点
	}
}

//如果去掉输出语句,从递归的角度看,三种算法是完全相同的,
//或说这三种算法的访问路径是相同的,只是访问结点的时机不同。
//输出根的顺序不同
//时间效率:O(n) :每个结点只访问一次
//空间效率: O(n):栈占用的最大辅助空

int main()
{
    int t, len;
    scanf("%d", &t);
    while(t--)
    {
        char mid[100], last[100];
        scanf("%s%s", mid, last);
        len = strlen(mid);
        BiTree bt = NULL;
        bt= Creat(len, mid, last);
		printf("前序遍历结果\n");
        PreOrderTraverse(bt);
		printf("\n");
        printf("中序遍历结果\n");
		InOrderTraverse(bt);
		printf("\n");
		printf("后序遍历结果\n");
		PostOrderTraverse(bt);
        printf("\n");
    }
    return 0;
}

Inserte la descripción de la imagen aquí

57 artículos originales publicados · Me gustaron 54 · Visitas 2339

Supongo que te gusta

Origin blog.csdn.net/September_C/article/details/105447120
Recomendado
Clasificación