• 一、题目
  • 二、解题思路
  • 三、解题代码

    一、题目

    请完成一个函数,输入一个二叉树,该函数输出它的镜像。

    二、解题思路

    先前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像。

    三、解题代码

    1. public class Test {
    2. /**
    3. * 二叉树的树结点
    4. */
    5. public static class BinaryTreeNode {
    6. int value;
    7. BinaryTreeNode left;
    8. BinaryTreeNode right;
    9. }
    10. /**
    11. * 请完成一个函数,输入…个二叉树,该函数输出它的镜像
    12. *
    13. * @param node 二叉树的根结点
    14. */
    15. public static void mirror(BinaryTreeNode node) {
    16. // 如果当前结点不为空则进行操作
    17. if (node != null) {
    18. // 下面是交换结点左右两个子树
    19. BinaryTreeNode tmp = node.left;
    20. node.left = node.right;
    21. node.right = tmp;
    22. // 对结点的左右两个子树进行处理
    23. mirror(node.left);
    24. mirror(node.right);
    25. }
    26. }
    27. }