#include <stdio.h>
#include <stdlib.h>
#include "bitree.h"
#include "sqstack.h"


void exchange ( BiTree T ) ;  // 实现二叉树左右子树的交换(非递归法)

int main()
{
	BiTree T;	
	CreateBiTree(T);
	printf("交换前二叉树中序遍历:");
  InOrderTraverse(T,visit);
	printf("\n");
  exchange(T);
  printf("交换后二叉树中序遍历:");
  InOrderTraverse(T,visit);
  printf("\n");
	DestoryBiTree(T);	
	return 0;
}



void exchange(BiTree T)
{
  // 实现二叉树左右子树的交换(栈实现)
  /********** Begin *********/
  SqStack S;
  BiTree temp;
  if(T){
    InitStack(S);
    Push(S,T);
    while(!StackEmpty(S)){
        Pop(S,T);
        temp=T->lchild;
        T->lchild=T->rchild;
        T->rchild=temp;
        if(T->lchild)
          Push(S,T->lchild);
        if(T->rchild)
          Push(S,T->rchild);
    }
  }
  /********** End **********/
}


   
posted on 2024-06-20 17:43  findscripter  阅读(34)  评论(0)    收藏  举报