剑指offer-面试题 19:二叉树的镜像
来源:互联网 发布:疯狗软件50 编辑:程序博客网 时间:2024/05/21 20:00
面试题 19:二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。
思路
这道题用到的思路是递归,就题目本身来说不是很难,需要考虑的是结束递归的条件。当我们输入一个空二叉树时,方法本身要能判断,并返回一个值为null的二叉树;当我们输入一个结点时,返回该结点本身。之后进行左右子树替换操作,然后开始迭代。
按照这样的逻辑就能轻松的写出代码了~
代码
package swordOffer;/** * 这是剑指offer的第19题:二叉树的镜像 * 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 * * @author Stephen Huge * */public class Ex19BTImage { public static void main(String[] args) throws Exception { int[] dlr = {1,2,4,7,3,5,6,8}; //前序遍历序列 int[] ldr = {4,7,2,1,5,3,8,6}; //中序遍历序列 Ex06RebuiltBT rbt= new Ex06RebuiltBT(); BinaryNode bt = rbt.RebuiltBT(dlr, ldr); System.out.println(); Ex19BTImage bti = new Ex19BTImage(); BinaryNode bt2 = bti.BTImage(bt); Ex23PrintBTByRow.printBTByRow(bt2); } public BinaryNode BTImage(BinaryNode node) { if(node == null) { return null; } if(node.lChild == null && node.rChild == null) { return node; } //更换左右子结点 BinaryNode temp = node.lChild; node.lChild = node.rChild; node.rChild = temp; //不断向下递归,获得镜像二叉树 BTImage(node.lChild); BTImage(node.rChild); return node; }}
代码逻辑按照上面的思路写出来,其中main()方法中用到了Ex06中的和Ex23中的,直接点击进行查看。
如有疑问,请在下面留言,我会及时回复~
0 0
- [剑指offer][面试题19]二叉树的镜像
- 【剑指offer】面试题19:二叉树的镜像
- 剑指offer 面试题19 二叉树的镜像
- 剑指Offer:面试题19 二叉树的镜像
- 《剑指Offer》面试题19:二叉树的镜像
- 剑指offer-面试题19:二叉树的镜像
- 剑指Offer----面试题19:二叉树的镜像
- 剑指offer面试题19:二叉树的镜像
- 剑指offer面试题19:二叉树的镜像
- 剑指offer面试题19:二叉树的镜像
- 剑指offer--面试题19:二叉树的镜像
- 剑指offer-面试题19-二叉树的镜像
- 【剑指offer】面试题19:二叉树的镜像
- 【面试题】剑指Offer-19-二叉树的镜像
- 剑指offer-面试题19-二叉树的镜像
- 剑指offer-面试题 19:二叉树的镜像
- 剑指offer 面试题19 二叉树的镜像
- 【剑指offer】面试题19:二叉树的镜像
- HDU 4333 Revolving Digits (扩展KMP)
- C++作业5:数组分离、成绩
- C++实验5:数组分离
- phpunit测试框架
- Emacs支持外部程序的粘贴
- 剑指offer-面试题 19:二叉树的镜像
- javaScript之表达式、运算符
- 分页功能的实现方法(不需要插件)
- 运输层TCP协议详细介绍
- Linux02
- 【TensorBoard】如何启动tensorboard的详尽步骤
- hdu 4786 Fibonacci Tree(最小生成树变形)
- 关于分针网
- C++实验5-数组分离