?? 先序遍歷的非遞歸實(shí)現(xiàn).c
字號(hào):
#include "malloc.h"
#define NULL 0
#define Max 50
#include "stdio.h"
typedef struct bitnode
{
char data;
struct bitnode *lchild;
struct bitnode *rchild;
}BitNode,*BiTree;
BiTree CreatTree()
{
char ch;BiTree q[Max],bt,s;int front,rear;
bt=NULL;front=1;rear=0;
scanf("\n%c",&ch);
while(ch!='#')
{
s=NULL;
if(ch!='0')
{
s=(BitNode*)malloc(sizeof(BitNode));
s->data=ch;
s->lchild=NULL;
s->rchild=NULL;
}
rear++;
q[rear]=s;
if(rear==1)
bt=s;
else
{
if(s!=NULL&&q[front]!=NULL)
if(rear%2==0)
q[front]->lchild=s;
else q[front]->rchild=s;
if(rear%2==1) front++;
}
scanf("\n%c",&ch);
}
return bt;
}
void Visit(char data)
{
printf(" %c ",data);
}
void Preorder(BiTree bt)
{
BiTree Stack[Max],p;
int top=0;
p=bt;
while(p!=NULL||top!=0)
{
while(p!=NULL)
{
Visit(p->data);
top++;Stack[top]=p->rchild;
p=p->lchild;
}
p=Stack[top];top--;
}
}
void main()
{
BiTree bt;
printf("\n按照完全二叉樹(shù)格式輸入字符型結(jié)點(diǎn)值,按回車輸入,空值為0,以'#'結(jié)束\n");
bt=CreatTree();
printf("\n先序遍歷\n");
Preorder(bt);
printf("\n");
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -