?? 二叉樹的遍歷及打印.cpp
字號:
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
/*#define TRUE 1
#define FALSE 0
#define Stack_Size 50
const NUM;
typedef struct
{ Stack ElementType elem[Stack_Size];
int top;
}SeqStack;非遞歸方法實現*/
typedef struct Node
{char data;
struct Node *Lchild;
struct Node *Rchild;
}BiTNode,*BiTree;
//建立二叉鏈表存儲的樹(按先序)
void CreateBiTree(BiTree *bt)
{
char ch;
ch=getchar();
if(ch=='.')
*bt=NULL;
else
{ *bt=(BiTree)malloc(sizeof(BiTNode));
(*bt)->data=ch;
CreateBiTree(&((*bt)->Lchild));
CreateBiTree(&((*bt)->Rchild));
}
}
//下面先用遞歸的方法實現
void PreOrder(BiTree root)
{ if(root!=NULL)
{//printf("%c", root->data);
PreOrder(root->Lchild);
printf("%c",root->data);
PreOrder(root->Rchild);
//printf("%c",root->data);
}
}
void main()
{BiTree T=NULL;
CreateBiTree(&T);
PreOrder(T);
printf("\n ");
}
/*//下面用非遞歸的方法來實現
void InitStack(SeqStack *S)
{ S->top=-1;
}
int IsEmpty(SeqStack *S)
{ return(S->top==-1?TRUE:FALSE);
}
int Push(SeqStack *S,StackElementType x)
{if(S->top==Stack_Size-1)
return (FALSE);
S->top++;
S->elem[S->top]=x;
return(TRUE);
}
int Pop(SeqStack *S,StackElementType *x)
{ if(S->top==-1)
return(FALSE);
else
{ *x=S->elem[S->top];
S->top--;
return(TRUE);
}}
void PreOrder(BiTree root)//非遞歸先序
{
BiTree p=root;
SeqStack S;
S.top=-1;
while(p!=NULL||S.top!=-1)
{if(p)
{
printf("%c",p->data);
Push(&S,p);
p=p->Lchild;
}
else
{
Pop(&S,&p);
p=p->Rchild;
}}}
void PostOrder(BiTree root) //非遞歸后序
{BiTNode *p,*q;
BiTNode **S;
int top=0;
q=NULL;
p=root;
S=(BiTNode**)malloc(sizeof(BiTNode*)*NUM);
while(p!=NULL||top!=0)
{while(p!=NULL)
{top++;
S[top]=p;
p=p->Lchild;
}
if(top>0)
{p=S[top];
if(p->Rchild==NULL)||(p->Rchild==q))
{printf(p->data);
q=p;
top--;
p=NULL;
}
else
p=p->Rchild;
}
}
free(S);
}
void InOrder(BiTree root)//非遞歸中序
{InitStack(&S);
p=root;
while((p!=NULL)||!IsEmpty(S))
{if(p!=NULL)
{Push(&S,p);
p=p->Lchild;
}
else
{ Pop(&S,&p);
printf(p->data);
p=p->Rchild;
}
}
}
{
BiTree T=NULL;
SeqStack s;
InitStack(&S);
IsEmpty(&S);
Push(&S,x);
Pop(&S,&x);
PreOrder(T);
PostOrder(T);
InOrder(T);
printf("\n ");
}*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -