使用栈实现二叉树的深拷贝
来源:互联网 发布:centos 防止arp 编辑:程序博客网 时间:2024/06/15 06:39
代码如下
//拷贝构造,非递归实现。 public BinaryTree(BinaryTree<T> p){ this(); //构造空二叉树 LinkedStack<BinaryNode<T>> stack = new LinkedStack<BinaryNode<T>>(); LinkedStack<BinaryNode<T>> stack1 = new LinkedStack<BinaryNode<T>>(); BinaryNode<T> p1 = p.root; BinaryNode<T> p2 = this.root; if(p1.left==null&&p1.right==null) p2.data = p1.data; else { while(p1!=null||!stack.isEmpty()) { if(p1!=null) { p2.data = p1.data; //结点入栈 stack1.push(p2); stack.push(p1); p1 = p1.left; //p1结点不为空,构建新的结点 if (p1 != null) { BinaryNode<T> p3 = new BinaryNode<T>(); //p2左结点为新的结点 p2.left = p3; //p2指向左结点 p2 = p2.left; } }else { //结点出栈 p1 = stack.pop(); //指向右结点 p1 = p1.right; p2 = stack1.pop(); //p1结点不为空,则构建新结点 if(p1!=null){ BinaryNode<T> p3 = new BinaryNode<T>(); p2.right = p3; p2 = p2.right; } } } } }
其他代码放在github上
请点击
阅读全文
0 0
- 使用栈实现二叉树的深拷贝
- 二叉树的拷贝
- 二叉树深拷贝构造及求node*父母结点的实现
- 深拷贝的实现
- 深拷贝的实现
- 深拷贝与浅拷贝的实现
- 浅拷贝与深拷贝、以及深拷贝的实现
- 使用栈来实现二叉树的反转(invert)
- 二叉树拷贝
- 使用递归方式实现的二叉树
- 二叉树的遍历使用Java实现
- java提高篇-----使用序列化实现对象的拷贝 (深拷贝)
- 使用mmap实现文件的拷贝
- 使用序列化实现对象的拷贝
- 使用序列化实现对象的拷贝
- 使用序列化实现对象的拷贝
- 使用字节流实现图片的拷贝
- 使用序列化实现对象的拷贝
- MYSQL——存储过程
- algo_KNN(k-nearest neighbor)
- Project interpreter not specified(eclipse+pydev)
- classloader memory leak
- MyBatis分页插件-PageHelper的配置与应用
- 使用栈实现二叉树的深拷贝
- 总结一下CSS中的定位 Position 属性
- 工作小感悟
- Pat 打印沙漏(20)
- echarts散点图整理
- Ecshop实现注册页面手机号唯一的验证
- strtok、strtok_s、strtok_r 字符串分割函数
- oracle添加dblink
- [LeetCode] First Bad Version