⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6.46.c

📁 部分高校使用anyview编程测试数据结构习题,此代码为数据结构题集(c语言版)严蔚敏版的课后习题答案.专门提供给在anyview上运行,全部为通告代码
💻 C
字号:
6.46③  编写复制一棵二叉树的非递归算法。

要求实现下列函数:
void CopyBiTree(BiTree T, BiTree &TT);
/* 基于层次遍历的非递归复制二叉链表 */

二叉链表类型定义:
typedef char TElemType;   // 设二叉树的元素为char类型
typedef struct BiTNode {
    TElemType data;
    BiTNode  *lchild, *rchild;
} BiTNode, *BiTree;

可用队列类型Queue的相关定义:
typedef BiTree QElemType; // 设队列元素为二叉树的指针类型
Status InitQueue(Queue &Q);
Status EnQueue(Queue &Q, QElemType e);
Status DeQueue(Queue &Q, QElemType &e);
Status GetHead(Queue Q, QElemType &e);
Status QueueEmpty(Queue Q);
void CopyBiTree(BiTree T, BiTree &TT)
/* 基于层次遍历的非递归复制二叉链表 */
{
  Queue Q1,Q2;
  struct BiTNode *p,*q;
  InitQueue(Q1);InitQueue(Q2);
  if(T){
      EnQueue(Q1,T);
      TT=(BiTNode*)malloc(sizeof(BiTNode));
      EnQueue(Q2,TT);
      while(!QueueEmpty(Q1))
        {
         DeQueue(Q1,p);
         DeQueue(Q2,q);
         q->data=p->data;     
         if(p->lchild)
           {q->lchild=(BiTNode*)malloc(sizeof(BiTNode));
            EnQueue(Q1,p->lchild);         
            EnQueue(Q2,q->lchild);
            }
         if(p->rchild)
           {q->rchild=(BiTNode*)malloc(sizeof(BiTNode));     
            EnQueue(Q1,p->rchild);
            EnQueue(Q2,q->rchild);
           }
      } //while
  }//if
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -