二叉树的镜像

来源:互联网 发布:高晓松酒驾事件知乎 编辑:程序博客网 时间:2024/06/11 09:25

一、二叉树镜像

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

            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

截图:
这里写图片描述

原创粉丝点击