非递归交换二叉树左右子树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非递归交换二叉树左右子树相关的知识,希望对你有一定的参考价值。

 1 void exchange( struct node* node){  
 2     struct node* tnode = node;  
 3     struct node* tmp = NULL;  
 4   
 5     if(node == NULL)  
 6         return;  
 7   
 8     while(1){  
 9         tmp = tnode-> left;  
10         tnode-> left = tnode->right ;  
11         tnode-> right = tmp;  
12   
13         if(tnode->right ){  
14             push(tnode-> right);  
15         }  
16   
17         if(tnode->left ){  
18             tnode = tnode->left;  
19         }  
20         else{  
21             if(!empty()){  
22                 tnode = top();  
23                 pop();  
24             }  
25             else{  
26                 break;  
27             }  
28         }  
29     }  
30 }

 

以上是关于非递归交换二叉树左右子树的主要内容,如果未能解决你的问题,请参考以下文章

(精)(递归遍历的延伸)交换二叉树的左右子树

十三:反转二叉树

求代码:实现二叉树中所有结点左右子树的交换

非递归建立二叉树

树翻转二叉树

二叉树的前中后和层序遍历详细图解(递归和非递归写法)