yujun59

博客园 首页 新随笔 联系 订阅 管理

使用递归法建立二叉树

1.代码

#include<stdio.h>
typedef struct BiTNode
{
    char data;
    struct BiTNode *rchild,*lchild;
} BiTNode,*BiTree;
int CreateBiTree(BiTNode *&T)   
{
    char x;
    scanf("%c",&x);
    if(x=='#')
        T=NULL;
    else
    {
        T=new BiTNode;     
        T->data=x;
        CreateBiTree(T->lchild);
        CreateBiTree(T->rchild);
    }
    return 0;
}
void PreOrder(BiTree T)
{
	if(T)
	{
		printf("%c",T->data);
		PreOrder(T->lchild);
		PreOrder(T->rchild);
	}
}
void InOrder(BiTree T)
{
	if(T)
	{
		InOrder(T->lchild);
		printf("%c",T->data);
		InOrder(T->rchild);
	}
}
void PostOrder(BiTree T)
{
	if(T)
	{
		PostOrder(T->lchild);
		PostOrder(T->rchild);
		printf("%c",T->data);
	}
}
int main()
{
	BiTNode *T;
	printf("以先序遍历的形式输入二叉树:"); 
	CreateBiTree(T);
	printf("前序遍历:"); 
	PreOrder(T);
	printf("\n中序遍历:");
	InOrder(T);
	printf("\n后序遍历:");
	PostOrder(T);
	delete T;
	return 0;
}

1.1先序遍历

void PreOrder(BiTree T)
{
	if(T)
	{
		printf("%c",T->data);
		PreOrder(T->lchild);
		PreOrder(T->rchild);
	}
}

1.2中序遍历

void InOrder(BiTree T)
{
	if(T)
	{
		InOrder(T->lchild);
		printf("%c",T->data);
		InOrder(T->rchild);
	}
}

1.3后序遍历

void PostOrder(BiTree T)
{
	if(T)
	{
		PostOrder(T->lchild);
		PostOrder(T->rchild);
		printf("%c",T->data);
	}
}

2.运行结果截图

posted on 2019-04-27 10:18  yujun59  阅读(431)  评论(0编辑  收藏  举报