zoukankan      html  css  js  c++  java
  • 如何复制一棵二叉树

    基本思路:

    (1)如果树非空,则复制该根节点,同时,把这两个节点分别进入QueueFormer,QueueCopy

    (2)让pFormer指向QueueFormer的对头,pCopy指向QueueCopy的队头。

    (3)pFormer的左右孩子,若非空,则复制其data,同时修改pCopy的左右孩子的指针,并对非空节点都入站操作,

    (4)对QueueFormer和QueueCopy出栈(对头节点已完成复制)

    (5)重复(2)~(4)直到队列为空

    (6)返回头指针,复制完成。

    代码:

     1 BinTree CopyTree(BinTree BT){
     2     Queue QueueFormer;
     3     Queue QueueCopy;
     4     BinTree root=NULL;
     5     init(QueueFomer);
     6     init(QueueCopy);
     7     if(BT!=NULL){
     8         root=(BinTree)malloc(sizeof(BinTNode));
     9         root->data=BT->data;
    10         root->lchild=NULL;
    11         root->rchild=NULL:
    12         EnQueue(QueueFormer,BT);
    13         EnQueue(QueueCopy,root);
    14     }
    15     while(!isEmptyQueue(QueueFormer)){
    16         BinTree pFomer=QueueHeader(QueueFormer);
    17         BinTree pCopy=QueueHeader(QueueCopy);
    18         if(pFormer->lchild!=NULL)//复制左孩子
    19         {
    20              BinTree temp=(BinTree)malloc(sizeof(BinTNode));
    21              temp->data=pFormer->lchild->data;
    22              temp->lchild=NULL;
    23              temp->rchild=NULL:
    24              pCopy->lchild=temp;
    25              EnQueue(QueueFormer,pFormer->lchild);
    26              EnQueue(QueueCopy,temp):
    27         }
    28         if(pFormer->rchild!=NULL)//复制右孩子
    29         {
    30              BinTree temp=(BinTree)malloc(sizeof(BinTNode));
    31              temp->data=pFormer->rchild->data;
    32              temp->lchild=NULL;
    33              temp->rchild=NULL:
    34              pCopy->rchild=temp;
    35              EnQueue(QueueFormer,pFormer->rchild);
    36              EnQueue(QueueCopy,temp);
    37         }
    38         DeQueue(QueueFormer);
    39         DeQueue(QueueCopy);
    40     }
    41 return root;
    42 }
  • 相关阅读:
    作业第十六周
    web、app、小程序测试异同点
    接口测试用例演进
    Python中“if __name__=='__main__':”
    iPhone发布内测程序的方法
    我的2020
    python 参数笔记 --> 位置参数 关键字参数 命名参数 形式参数 默认参数 可变参数 可选参数 位置顺序
    uwsgi 热部署 热启动 热更新
    Supervisor 进程管理工具 笔记
    spring Boot----注解驱动开发
  • 原文地址:https://www.cnblogs.com/GoAhead/p/2514712.html
Copyright © 2011-2022 走看看