首页 > 技术文章 > c语言二叉树的先序创建、(先中后序)遍历以及存在的问题

Xuxiaokang 2021-12-16 11:41 原文

问题来源

在学习先序遍历的顺序创建二叉树的时候,首先自己写了如下的代码:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<math.h>

typedef struct BiTreeNode
{
    char Data;
    struct BiTreeNode* Lchild;
    struct BiTreeNode* Rchild;
}BiTreeNode,*BiTree;

void CreateBiTree(BiTree T)
{
    if(T == NULL){
	return;
    }
    else{
	char ch;
	scanf("%c",&ch);
	if(ch == '#'){
	    T = NULL;
	}
	else{
	    T = (BiTree)malloc(sizeof(BiTreeNode));
	    if(T == NULL)
		exit(OVERFLOW);
	    T->Data = ch;
	    CreateBiTree(T->Lchild);
	    CreateBiTree(T->Rchild);
	}
    }
}

void PreOrderTraverse(BiTree T)
{
    if(T == NULL)
	return;
    else{
	printf("%c",T->Data);
	PreOrderTraverse(T->Lchild);
	PreOrderTraverse(T->Rchild);
    }
}

void InOrderTraverse(BiTree T)
{
    if(T == NULL)
	return;
    else{
	InOrderTraverse(T->Lchild);
	printf("%c",T->Data);
	InOrderTraverse(T->Rchild);
    }
}

void PostOrderTraverse(BiTree T)
{
    if(T == NULL)
	return;
    else{
	PostOrderTraverse(T->Lchild);
	PostOrderTraverse(T->Rchild);
	printf("%c",T->Data);
    }
}

int main(void)
{
    BiTree T;
    CreateBiTree(T);
    InOrderTraverse(T);
    printf("\n");
    PostOrderTraverse(T);

    return 0;
}

查找分析

满怀成就感的写完了上面的代码

推荐阅读