色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

樹的遍歷算法

錢瀠龍2年前16瀏覽0評論

樹的遍歷算法?

這里有二叉樹先序、中序、后序三種遍歷的非遞歸算法,此三個算法可視為標(biāo)準(zhǔn)算法。

1.先序遍歷非遞歸算法

#define

maxsize

100

typedef

struct

{

Bitree

Elem[maxsize];

int

top;

}SqStack;

void

PreOrderUnrec(Bitree

t)

{

SqStack

s;

StackInit(s);

p=t;

while

(p!=null

!StackEmpty(s))

{

while

(p!=null)

//遍歷左子樹

{

visite(p->data);

push(s,p);

p=p->lchild;

}//endwhile

if

(!StackEmpty(s))

//通過下一次循環(huán)中的內(nèi)嵌while實現(xiàn)右子樹遍歷

{

p=pop(s);

p=p->rchild;

}//endif

}//endwhile

}//PreOrderUnrec

2.中序遍歷非遞歸算法

#define

maxsize

100

typedef

struct

{

Bitree

Elem[maxsize];

int

top;

}SqStack;

void

InOrderUnrec(Bitree

t)

{

SqStack

s;

StackInit(s);

p=t;

while

(p!=null

!StackEmpty(s))

{

while

(p!=null)

//遍歷左子樹

{

push(s,p);

p=p->lchild;

}//endwhile

if

(!StackEmpty(s))

{

p=pop(s);

visite(p->data);

//訪問根結(jié)點

p=p->rchild;

//通過下一次循環(huán)實現(xiàn)右子樹遍歷

}//endif

}//endwhile

}//InOrderUnrec

3.后序遍歷非遞歸算法

#define

maxsize

100

typedef

enum{L,R}

tagtype;

typedef

struct

{

Bitree

ptr;

tagtype

tag;

}stacknode;

typedef

struct

{

stacknode

Elem[maxsize];

int

top;

}SqStack;

void

PostOrderUnrec(Bitree

t)

{

SqStack

s;

stacknode

x;

StackInit(s);

p=t;

do

{

while

(p!=null)

//遍歷左子樹

{

x.ptr

=

p;

x.tag

=

L;

//標(biāo)記為左子樹

push(s,x);

p=p->lchild;

}

while

(!StackEmpty(s)

&&

s.Elem[s.top].tag==R)

{

x

=

pop(s);

p

=

x.ptr;

visite(p->data);

//tag為R,表示右子樹訪問完畢,故訪問根結(jié)點

}

if

(!StackEmpty(s))

{

s.Elem[s.top].tag

=R;

//遍歷右子樹

p=s.Elem[s.top].ptr->rchild;

}

}while

(!StackEmpty(s));

}//PostOrderUnrec

java層次遍歷二叉樹,樹的遍歷算法