用非递归算法,交换二叉树某结点的左右子树
用二叉链表存储某二叉树,交换结点信息为item的结点的左右子树的位置。假设该二叉树中有且仅有一个满足条件的结点。
typedef struct node {
int data;
struct node *lchild,rchild;
}*BTREE;
#define M 50
void ExchangeChild(BTREE T)
{
BTREE Stack[M],p=T,q=NULL;
int top = -1;
if(T!=NULL)
{
Stack[++top]=p;
while(p!=NULL&&top!=-1)
{
p=Stack[top--];
if (p!=NULL)
{
if(p->data==item)
{
q=p->lchild;
p->lchild=p->rchild;
p->rchild=q;
break;
}
Stack[++top]=p->rchild;
Stack[++top]=p->lchild;
}
}
}
}