【剑指offer-Java版】19二叉树的镜像
2016-04-26 11:01
555 查看
二叉树的镜像:
测试代码:
public class _Q19 { public void MirrorRecursively(BinaryTreeNode tree){ if(tree == null) return; if(tree.leftChild == null && tree.rightChild == null) return; BinaryTreeNode tempNode = tree.leftChild; tree.leftChild = tree.rightChild; tree.rightChild = tempNode; MirrorRecursively(tree.rightChild); MirrorRecursively(tree.leftChild); } }
测试代码:
public class _Q19Test extends TestCase { _Q19 mirrorTree = new _Q19(); // 测试用的树是第18题中构造的树,挺好用的 哈哈哈 public void test(){ BinaryTreeNode node0 = new BinaryTreeNode(); BinaryTreeNode node1 = new BinaryTreeNode(); BinaryTreeNode node2 = new BinaryTreeNode(); BinaryTreeNode node3 = new BinaryTreeNode(); BinaryTreeNode node4 = new BinaryTreeNode(); BinaryTreeNode node5 = new BinaryTreeNode(); BinaryTreeNode node6 = new BinaryTreeNode(); BinaryTreeNode node7 = new BinaryTreeNode(); BinaryTreeNode node8 = new BinaryTreeNode(); BinaryTreeNode node9 = new BinaryTreeNode(); node0.value = 8; node1.value = 8; node2.value = 7; node3.value = 9; node4.value = 2; node5.value = 4; node6.value = 7; node7.value = 8; node8.value = 9; node9.value = 2; // 改动以修改成一棵不在tree1中的子树 node0.leftChild = node1; node0.rightChild = node2; node1.leftChild = node3; node1.rightChild = node4; node4.leftChild = node5; node4.rightChild = node6; node2.leftChild = null; node2.rightChild = null; node3.leftChild = null; node3.rightChild = null; node5.leftChild = null; node5.rightChild = null; node6.leftChild = null; node6.rightChild = null; node7.leftChild = node8; node7.rightChild = node9; node8.leftChild = null; node8.rightChild = null; node9.leftChild = null; node9.rightChild = null; System.out.println("before:"); CommonUtils.PrintTreePreOrder(node0); System.out.println(); CommonUtils.PrintTreePreOrder(node7); System.out.println(); mirrorTree.MirrorRecursively(node0); mirrorTree.MirrorRecursively(node7); System.out.println("after:"); CommonUtils.PrintTreePreOrder(node0); System.out.println(); CommonUtils.PrintTreePreOrder(node7); } }
相关文章推荐
- jquery插件fullPage.js的用法
- JS之实现鼠标切换效果
- caffe 源码学习(三) SyncedMemory 与 shared_ptr
- JavaScript事件处理的方式(三种)
- jQuery EasyUI 之DataGrid 数据表格
- Ext基础操作dom更改css
- 学习AngularJs:Directive指令用法(完整版)
- (OK) Fedora23—Install times new roman font—MS fonts
- (礼拜一log)前端开发:children和find函数;position属性
- hadoop namenode启动不了解决方案
- js 扩展String 判断一个字符串是否为其子串
- css文件中的样式类被覆盖,js文件中的变量未定义问题问题
- jQuery siblings()用法实例详解
- ZeroClipboard.js复制内容到剪贴板(跨浏览器)
- JQuery插件Marquee.js实现无缝滚动效果
- 剑指offer 连续子数组的最大和
- CSS3 的 appearance用法
- css3动画总结
- js常用正则表达式
- 剑指offer(20):二叉树的镜像