复制二叉树(非递归实现)
来源:互联网 发布:cs go mac 闪退 编辑:程序博客网 时间:2024/05/27 21:47
pbinary_tree_node copy_binary_tree(pbinary_tree_node bt){//先序遍历输出一颗树的全部结点值1,2,3stack<pbinary_tree_node> stack_left,stack_right;pbinary_tree_node newbt;if (bt!=NULL){//new rootnewbt=new binary_tree_node;newbt->data=bt->data;//travel bt and travel newbt at the same timestack_left.push(bt);stack_right.push(newbt);while (!stack_left.empty()){pbinary_tree_node pleft=stack_left.top();pbinary_tree_node pright=stack_right.top();stack_left.pop();stack_right.pop();if (pleft->rchild!=0){stack_left.push(pleft->rchild);pright->rchild=new binary_tree_node;pright->rchild->data=pleft->rchild->data;stack_right.push(pright->rchild);}if (pleft->lchild!=0){stack_left.push(pleft->lchild);pright->lchild=new binary_tree_node;pright->lchild->data=pleft->lchild->data;stack_right.push(pright->lchild);}}}return newbt;}
这个算法使用了两个栈,一个栈用来遍历原来的二叉树,另一个栈一边创建新的二叉树,一边同第一个栈同步,保存遍历时的轨迹。
- 复制二叉树(非递归实现)
- 使用栈非递归实现复制二叉树
- 二叉树的遍历(递归实现+非递归实现)
- 二叉树非递归实现
- 二叉树的遍历(递归,非递归)实现
- 二叉树的遍历(非递归和递归实现)
- 二叉树遍历(递归和非递归实现)
- 二叉搜索树(递归和非递归分别实现)
- 二叉树算法的实现(递归与非递归)
- 二叉树遍历(递归与非递归实现)
- 二叉树遍历算法实现(递归、非递归)
- 二叉树及其遍历(递归和非递归实现)
- C++实现二叉搜索树(递归&非递归)
- 算法:C++实现二叉树遍历(递归、非递归)
- 递归与非递归实现二叉树
- java 实现二叉树【递归/非递归】
- 二叉树遍历(非递归实现--栈实现)
- 二叉树遍历(递归,非递归)
- HDU4333:Revolving Digits(拓展kmp)
- Linux(二)——版本介绍
- POD
- Android开发当中Parcelable接口的使用
- asp.net Forms表单验证 使用经验及验证流程分析
- 复制二叉树(非递归实现)
- Adb不能启动问题
- evdo协议基础知识
- C# List<T> 数组,集合等排序
- IOS开发共享设置,通过iTunes允许上传本地文件
- sms开发-webservice
- 求两有序数组是否有相同元素
- Automatic Reference Counting (ARC)
- INS-40904 错误解决