复制一棵二叉树的非递归算法
来源:互联网 发布:centos 6.5 squid 编辑:程序博客网 时间:2024/04/30 01:44
二叉链表类型定义:
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)/* 基于层次遍历的非递归复制二叉链表 */{ BiTree p1,p2; Queue Q1,Q2; if(!T){ TT = NULL; return ; } TT = (BiTree)malloc(sizeof(BiTNode)); InitQueue(Q1); InitQueue(Q2); EnQueue(Q1,T); EnQueue(Q2,TT); while(!QueueEmpty(Q1)){ DeQueue(Q1,p1); DeQueue(Q2,p2); p2 -> data = p1 -> data; if(p1 ->lchild){//复制左子树 EnQueue(Q1,p1 -> lchild); p2 -> lchild = (BiTree)malloc(sizeof(BiTNode)); if(!p2 -> lchild){ exit(OVERFLOW); } EnQueue(Q2,p2 -> lchild); } if(p1 ->rchild){//复制右子树 EnQueue(Q1,p1 -> rchild); p2 -> rchild = (BiTree)malloc(sizeof(BiTNode)); if(!p2 -> rchild){ exit(OVERFLOW); } EnQueue(Q2,p2 -> rchild); } }}
1 0
- 复制一棵二叉树的非递归算法
- 编写复制一颗二叉树的非递归算法
- 复制一棵二叉树的递归算法
- 二叉树遍历的非递归算法
- 二叉树的非递归算法总结
- 遍历二叉树的非递归算法
- 遍历二叉树的非递归算法
- 二叉树的非递归算法:
- 二叉树的遍历非递归算法
- 遍历二叉树的非递归算法
- 二叉树的遍历非递归算法
- 二叉树遍历的非递归算法
- 二叉树的非递归遍历算法
- 二叉树遍历的非递归算法
- 二叉树遍历的非递归算法
- 二叉树遍历的非递归算法
- 二叉树遍历的非递归算法
- 二叉树的非递归遍历算法
- 计算二叉树中叶子结点的数目
- 100行代码实现最简单的基于FFMPEG+SDL的视频播放器
- 笑一下喽
- 【UNIX网络编程(四)】TCP套接字编程详细分析
- C#面向对象 多态的实现之 - 虚方法和抽象类:
- 复制一棵二叉树的非递归算法
- NSString NSArray NSDictionary NSSet 中的部分方法
- Python实现快速排序
- Mongoose源码分析
- 时间格式的处理
- usaco 5.1.2 Snail Trails
- 不准守规范导致的系统故障
- 按层次顺序(同一层自左至右)遍历二叉树的算法
- linux下apache https 虚拟主机配置