补第7天 输入一个二叉树,该函数输出它的镜像。
来源:互联网 发布:mac系统基础教程视频 编辑:程序博客网 时间:2024/06/07 13:19
题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像。
如下图
上图左侧是二叉树,右侧二叉树是左侧的镜像,可以看出每一层都与左侧二叉树是相反的。
左侧前序遍历是8, 6, 5, 7, 10, 9, 11
右侧二叉树前序遍历是8, 10, 11, 9, 6, 7, 5
但是上图是一个完整二叉树必须考虑当不是完整二叉树的时候程序是否依然可以运行,下图是演示当二叉树非完整二叉树时镜像:
左侧前序遍历是10, 8, 7, 9, 15
右侧二叉树前序遍历是8, 15, 8, 9, 7
以下是完整代码,并且在mian函数中使用以上的左侧的输入作为输入,如果结果与右侧二叉树的前序遍历结果相同则说明程序没问题
代码中用到的二叉树源码:
http://blog.csdn.net/androiddevelop/article/details/18567085
/** * 面试题19 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 * * 出错:不是遍历交换左右树的值,而是需要交换整个左右子节点 * 如果是前者仅颠倒当前层级节点,其下级节点还是在原来位置 * * 2014-1-22 */public class MirrorOfBinaryTree<T> {public void mirrorRecursively(Node<T> root) {if (root == null) {return;}Node<T> leftNode = root.getLeftNode();Node<T> rightNode = root.getRightNode();if (leftNode != null || rightNode != null) {//T temp = leftNode.getData();//leftNode.setData(rightNode.getData());//rightNode.setData(temp);root.setLeftNode(rightNode);root.setRightNode(leftNode);mirrorRecursively(leftNode);mirrorRecursively(rightNode);}}public static void main(String[] args) {MirrorOfBinaryTree<Integer> mirror = new MirrorOfBinaryTree<Integer>();Integer[] data1 = {8, 6, 5, null, null, 7, null, null, 10, 9, null, null, 11, null, null}; BinaryTree<Integer> tree1 = new BinaryTree<Integer>();tree1.createTree(data1);System.out.println("树1前序遍历");tree1.preorderTraversal(tree1.getRootNode());mirror.mirrorRecursively(tree1.getRootNode());System.out.println("\n镜像树1前序遍历");tree1.preorderTraversal(tree1.getRootNode());//Integer[] data2 = {10, 8, 7, 6, null, null, 9, null, null, 15, null, null}; Integer[] data2 = {10, 8, 7, null, null, 9, null, null, 15, null, null}; BinaryTree<Integer> tree2 = new BinaryTree<Integer>();tree2.createTree(data2);System.out.println("\n\n树2前序遍历");tree2.preorderTraversal(tree2.getRootNode());System.out.println();mirror.mirrorRecursively(tree2.getRootNode());System.out.println("\n镜像树2前序遍历");tree2.preorderTraversal(tree2.getRootNode());}}
参考资料:
《剑指offer》面试题19
0 0
- 补第7天 输入一个二叉树,该函数输出它的镜像。
- 第15题:输入一棵二叉树,将该树转换为它的镜像
- 输入一个二叉树,输出其镜像。
- 第15 题:题目:输入一颗二元查找树,将该树转换为它的镜像
- 第15 题: 题目:输入一颗二元查找树,将该树转换为它的镜像,
- 把一个二叉树转成它的“镜像”
- 输入一个二叉树,输出其镜像(二叉树反转)
- 输入一颗二元查找树,将该树转换为它的镜像
- 15、输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像,
- 输入一颗二元查找树,将该树转换为它的镜像
- 【算法】输入一颗二元查找树,将该树转换为它的镜像
- 15.输入一颗二元查找树,将该树转换为它的镜像
- 15.输入一颗二元查找树,将该树转换为它的镜像
- No15、输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- Kettle(Pentaho DataIntegration) 安装Hadoop-2.2.0插件
- linux强制位与冒险位(s位,t位)
- [黑客入门]花无涯新手入门教程笔记
- websphere mq互连通信
- 数据迁移:在新旧系统中切换
- 补第7天 输入一个二叉树,该函数输出它的镜像。
- 小飞计算器(小飞可编程复数计算器)用户手册
- websphere mq应用程序通信
- 抓交通肇事犯
- FileStorge相关的几个intent
- 第一个java小程序
- Dreamweaver杀手!Illustrator终结者?Flash的末日?图形图像设计程序之网页版
- linux内核学习之三:linux中的"32位"与"64位"
- FusionCharts封装-dataset和categories