这几天端午就忙活这个东西了~
我总是倾向于用栈来代替递归,不知道为什么,心理问题? …….

鉴于书上没有非递归的代码,也想锻炼一下自己,就写了一个先序遍历的非递归函数,其他的例如建立二叉树函数、主函数就不贴上来了,都一样。

01 void Not_PrePrint(BiTreeNode *p)
02 {
03 
04     Stack s;
05     InitStack(&s);
06     Push(&s,p);
07     int flag=1;
08 
09     while(p!=NULL||!IsEmpty(&s))
10     {
11         if(flag==1)
12         {
13             p=Pop(&s);
14             flag=0;
15         }
16         while(p!=NULL)
17         {
18             cout<<p->val<<“,”;
19             Push(&s,p);
20             p=p->lchild;
21         } //一直向左到底
22 
23         p=Pop(&s);
24         p=p->rchild;
25         if(p!=NULL)
26             ;
27         else if(!IsEmpty(&s))
28         {
29             for(;p==NULL&&!IsEmpty(&s);)
30             {
31                 p=Pop(&s);
32                 p=p->rchild;
33             }
34         }
35     }
36 }
Tags: ,. 8,277 views
Home

2 Comments so far

Trackbacks/Pingbacks

Leave a comment

Name(required)
Mail (required),(will not be published)
Website(recommended)

Fields in bold are required. Email addresses are never published or distributed.

Some HTML code is allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
URLs must be fully qualified (eg: http://blog.nlogn.cn),and all tags must be properly closed.

Line breaks and paragraphs are automatically converted.

Please keep comments relevant. Off-topic, offensive or inappropriate comments may be edited or removed.