本条微博地址
Lailalala
平衡二叉树和红黑树也太难了叭😑😑😑😑旋来旋去🤦♀️转来转去🫥
本条微博地址
眼久
给我画一个二叉树
本条微博地址
抱着月亮星星睡觉
晚上十点半的幸运咖和二叉树很配[发射爱心]
本条微博地址
-白桐叶-
#include
#include
#define MAX 50
typedef struct btnode
{
int Data;
struct btnode *Llink;
struct btnode *Rlink;
}btnode,*btreetype;
void OutputTree(btreetype &root)
{
btreetype p;
p=root->Llink;
printf("建立的二叉树的左子树为:");
while(p!=NULL)
{
printf("%d ",p->Data);
p=p->Llink;
}
p=root->Rlink;
printf("\n建立的二叉树的右子树为:");
while(p!=NULL)
{
printf("%d ",p->Data);
p=p->Rlink;
}
}
void PreOrder(btreetype &root)
{
btreetype p;
p=root;
if(p!=NULL)
{
printf("%d ",p->Data);
PreOrder(p->Llink);
PreOrder(p->Rlink);
}
}
void InOrder(btreetype &root)
{
btreetype p;
p=root;
if(p!=NULL)
{
InOrder(p->Llink);
printf("%d ",p->Data);
InOrder(p->Rlink);
}
}
void InOrder_Norecursion(btreetype &root)
{
btreetype stack[MAX];
btreetype p;
int top=0;
p=root;
do
{
while(p!=NULL)
{
top++;
stack[top]=p;
p=p->Llink;
}
if(top>0)
{
p=stack[top];
top--;
printf("%d ",p->Data);
p=p->Rlink;
}
}while(p!=NULL||top!=0);
}
void PostOrder(btreetype &root)
{
btreetype p;
p=root;
if(p!=NULL)
{
PreOrder(p->Llink);
PreOrder(p->Rlink);
printf("%d",p->Data);
}
}
btreetype CreateTree(int n)
{
int i;
btreetype root=NULL;
for(i=0;iData);
newNode->Llink=NULL;
newNode->Rlink=NULL;
currentNode=root;
if(currentNode==NULL) root=newNode;
else
{
while(currentNode!=NULL)
{
parentNode=currentNode;
if(newNode->DataData)
currentNode=currentNode->Llink;
else
currentNode=currentNode->Rlink;
}
if(newNode->DataData)
parentNode->Llink=newNode;
else
parentNode->Rlink=newNode;
}
}
return root;
}
int main()
{
btreetype btree;
int count;
printf("input the number of elements:\n");
scanf("%d",&count);
printf("input data(num=%d):\n",count);
btree=CreateTree(count);
printf("\n先序遍历建立的二叉树:");
PreOrder(btree);
printf("\n中序遍历建立的二叉树:(递归方式)");
InOrder(btree);
printf("\n中序遍历建立的二叉树:(非递归方式)");
InOrder_Norecursion(btree);
printf("\n后序遍历建立的二叉树:");