二叉树的建立与插入和遍历

本文介绍了一个简单的二叉搜索树的创建与插入操作,并实现了先序遍历与中序遍历来展示树的结构。通过输入一系列整数构建了二叉搜索树,并演示了如何遍历它。
#include<stdio.h>
#include<stdlib.h>




typedef struct name{
int Data;
struct name *left;
struct name *right;
}Node,*PNode;




typedef PNode BinTree;
PNode CreateTree();
PNode Insert(PNode BST,int x);
void PreorderTraversal(BinTree BT);
void InorderTraversal(BinTree BT);


int main(void)
{
PNode T;
PNode BST;
int Data;
int flag=0,flag2=0;
T=CreateTree();
while(Data!=-1)
{

scanf("%d",&Data);
if(flag2==0)
{
T->Data=Data;
flag2=1;
continue;
}
if(Data==-1)
{
break;
}
if(flag==0)
{
BST=Insert(T,Data);
}
flag=1;
Insert(T ,Data);
}
// printf("%d  ",T);
// printf("%d \n",BST);
printf(" PreorderTraversal \n");
PreorderTraversal(BST);
printf(" InorderTraversal \n");
InorderTraversal(BST);

return 0;
}
PNode CreateTree()
{
PNode Y;
Y=(PNode)malloc(sizeof(Node));
Y->left=NULL;
Y->right=NULL;
//printf("%d",Y->Data);
return Y;
}
PNode Insert(PNode BST,int x)
{
if(!BST){
BST=(BinTree)malloc(sizeof(Node));
BST->Data=x;
BST->left=BST->right=NULL;
}
else
{
if(x<BST->Data)
BST->left=Insert(BST->left,x);
else if(x>BST->Data)
BST->right=Insert(BST->right,x);
}
return BST;
}
void PreorderTraversal(BinTree BT)
{
if(BT)
{
printf("%d ",BT->Data);
PreorderTraversal(BT->left);
PreorderTraversal(BT->right);
}
}
void InorderTraversal(BinTree BT)
{
if(BT)
{
InorderTraversal(BT->left);
InorderTraversal(BT->right);
printf("%d ",BT->Data);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值