二叉树中所有节点的左右子树相互交换 递归与非递归程序

来源:互联网 发布:淘宝店铺头像在线制作 编辑:程序博客网 时间:2024/04/28 17:09
//将二叉树中所有节点的左右子树相互交换BiNode* Exchange(BiNode* T){ BiNode* p; if(NULL==T || (NULL==T->lchild && NULL==T->rchild))  return T; p = T->lchild; T->lchild = T->rchild; T->rchild = p; if(T->lchild) {  T->lchild = Exchange(T->lchild); } if(T->rchild) {  T->rchild = Exchange(T->rchild); } return T;}//将二叉树中所有节点的左右子树相互交换//不使用递归void NonRecursive_Exchange(BiNode* T){ Stack s; BiNode* p; if(NULL==T)  return; InitStack(&s); Push(&s,T); while(!isEmpty(&s)) {  T = Pop(&s);  p = T->lchild;  T->lchild = T->rchild;  T->rchild = p;  if(T->rchild)   Push(&s,T->rchild);  if(T->lchild)   Push(&s,T->lchild);  }  DestroyStack(&s); }
0 0
原创粉丝点击