将二叉树的两个孩子换位置,即左变右,右变左。不能用递规

来源:互联网 发布:python正则匹配ip地址 编辑:程序博客网 时间:2024/05/09 15:45

分析

先用递归


//二叉树的两个孩子换位置(递归版本):  void exchange(BiTree BT)  {   BiTree   p;if(BT=NULL){p=BT-> lchild;BT-> lchild=BT-> rchild;BT-> rchild=p;exchange(BT-> lchild);exchange(BT-> rchild);}} 

非递归实现

//二叉树的两个孩子换位置(非递归版本):  //   在二叉链表下的交换操作  void exchange(BiTree BT){BiTree   r,p;BiTree   stack[100];int   tp=0;stack[0]=BT;while(tp >= 0){p=stack[tp];tp=tp-1;if(p!=NULL){r=p-> lchild;p-> lchild=p-> rchild;BT-> rchild=r;  stack[tp+1]=p-> lchild;tp=tp+1;stack[tp+1]=p-> rchild;tp=tp+1;}}}







原创粉丝点击