二叉树了解一下

#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;
T=CreateTree();
while(Data!=-1)
{
scanf("%d",&Data);
if(Data==-1)
{
break;
}
if(flag==0)
{
BST=Insert(T,Data);
}
flag=1;
BST=Insert(BST ,Data);
}
printf(" PreorderTraversal \n");
PreorderTraversal(T);
printf(" InorderTraversal \n");
InorderTraversal(T);

return 0;
}
PNode CreateTree()
{
PNode Y;
Y=(PNode)malloc(sizeof(Node));
Y->left=NULL;
Y->right=NULL;
//Y=NULL;
}
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);
}

}

还有一个小BUFF,明天改了

猜你喜欢

转载自blog.csdn.net/weixin_42383680/article/details/80573148