您的位置:首页 > Web前端

【剑指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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: