二叉树的镜像
来源:互联网 发布:美国p2p软件 编辑:程序博客网 时间:2024/05/19 16:05
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。
所谓数的镜像,就是指每个节点的左右子节点互换位置。列如一棵二叉树的先序遍历为:8 6 5 7 10 9 11,它的镜像树的先序 遍历则为8 10 11 9 6 7 5 。
代码如下:
public class BinaryTreeDemo {
public static void main(String[] args) {
/**
* 构造一棵二叉树
* */
BinaryTreeNode root = new BinaryTreeNode(8);
root.left = new BinaryTreeNode(6);
root.right = new BinaryTreeNode(10);
root.left.left = new BinaryTreeNode(5);
root.left.right = new BinaryTreeNode(7);
root.right.left = new BinaryTreeNode(9);
root.right.right = new BinaryTreeNode(11);
root.left.left.left = null;
root.left.left.right = null;
root.left.right.left = null;
root.left.right.right = null;
root.right.left.left = null;
root.right.left.right = null;
root.right.right.left = null;
root.right.right.right = null;
/**
* 先序遍历二叉树
* */
printBinaryTree(root);
System.out.println();
/**
* 求出一棵二叉树的镜像
*
* */
BinaryTreeNode root1 = mirrorRecursively(root);
printBinaryTree(root1);
}
private static BinaryTreeNode mirrorRecursively(BinaryTreeNode root) {
if(root != null){
BinaryTreeNode treeNode = null;
//调换节点的左右节点
treeNode = root.left;
root.left = root.right;
root.right = treeNode;
root.left = mirrorRecursively(root.left);
root.right = mirrorRecursively(root.right);
}else{
return null;
}
return root;
}
private static void printBinaryTree(BinaryTreeNode root) {
if(root != null){
System.out.print(root.value + " ");
printBinaryTree(root.left);
printBinaryTree(root.right);
}else{
return;
}
}
}
/**
*
*二叉树的节点类
* */
class BinaryTreeNode{
public int value;
public BinaryTreeNode left;
public BinaryTreeNode right;
public BinaryTreeNode(int value) {
super();
this.value = value;
}
public BinaryTreeNode() {
super();
}
}
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 选择排序
- (一)mybatis+mysql 基本环境搭建
- HYSBZ 2038 小Z的袜子 莫队算法
- leetcode之路029 Divide Two Integers
- Java 修饰符
- 二叉树的镜像
- 机器学习算法之决策树算法
- OpenCV函数 Laplacian 算子实现
- 【转自看雪】反编译apk+eclipse中动态调试smali
- 冒泡排序法
- 487--3279
- Spark初探
- VS.NET 2005 wince SDK installed in vs.net 2008
- HDU 4313 Matrix(并查集|最小生成树变种)