基本思想:(先序,中序,后序,層次遍歷都可以實現,本質就是就是交換每個節點的左右孩子)
(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 }
