您的位置:首页 > 其它

二叉树的镜像

2017-12-24 02:17 197 查看

一、二叉树镜像

二叉树的镜像就是把每个节点的左子树和右字数互换位置,例如源二叉树为:

8
/  \
6   10
/ \  / \
5  7 9 11


其镜像二叉树为:

8
/  \
10   6
/ \  / \
11 9 7  5


二、java实现

public void mirrorTree(TreeNode node){
if(node==null){
return;
}
Stack<TreeNode> stack=new Stack<TreeNode>();
stack.push(node);
while(!stack.isEmpty()){
TreeNode current=stack.pop();
if(current.left!=null||current.right!=null){
TreeNode templeft=current.left;
TreeNode tempright=current.right;
current.left=tempright;
current.right=templeft;
}
if(current.left!=null){
stack.push(current.left);
}
if(current.right!=null){
stack.push(current.right);
}
}
}


三、测试

public static void main(String[] args) {

BinaryTree btree = new BinaryTree("8");

TreeNode node1 = new TreeNode("6");
TreeNode node2 = new TreeNode("10");
TreeNode node3 = new TreeNode("5");
TreeNode node4 = new TreeNode("7");
TreeNode node5 = new TreeNode("9");
TreeNode node6 = new TreeNode("11");

btree.root.left=node1;
btree.root.right=node2;

node1.left=node3;
node1.right=node4;

node2.left=node5;
node2.right=node6;

mirrorTree(btree.root);
System.out.println("中序遍历镜像二叉树");
btree.inOrderTraverse(btree.root);
}


结果:

中序遍历镜像二叉树
11  10  9   8   7   6   5


截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: