二叉樹交換左右子樹非遞歸算法


基本思想:(先序,中序,后序,層次遍歷都可以實現,本質就是就是交換每個節點的左右孩子)

(1)若樹非空,則入隊

(2)若隊頭指針的左右孩子非空,則入隊。

(3)交換對頭節點的左右孩子,出隊。

(4)重復步驟(2)(3)直到隊列為空

(5)交換結束。

算法:

 1 void Exchange(BinTree BT){
 2     Queue Q;
 3     initQueue(Q);
 4     if(BT!=NULL){
 5         EnQueue(Q,BT);
 6     }
 7     while(!isEmptyQueue(Q)){
 8         BinTree p=QueueHead(Q);
 9         if(p->lchild!=NULL){
10             EnQueue(Q,p->lchild);
11         }
12         if(p->rchild!=NULL){
13             EnQueue(Q,p->rchild);
14         }
15         BinTree temp;
16         temp=p->lchild;
17         p->lchild=p->rchild;
18         p->rchild=temp;
19     }
20 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM