4.剑指Offer之二叉树的镜像

    技术2025-08-05  9

    目录

    1.题目描述:2.解题思路:3.编程实现(Java):

    1.题目描述:

      操作给定的二叉树,将其变换为原二叉树的镜像。

    2.解题思路:

      求一棵树的镜像的过程:先前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有的非叶结点的左、右子结点后,就可以得到该树的镜像。

      如下面的例子,先交换根节点的两个子结点之后,我们注意到值为10、6的结点的子结点仍然保持不变,因此我们还需要交换这两个结点的左右子结点。做完这两次交换之后,我们已经遍历完所有的非叶结点。此时变换之后的树刚好就是原始树的镜像。      

    3.编程实现(Java):

    public class TreeMirror_4 { public void Mirror(TreeNode root) { if (root != null) { if (root.left != null || root.right != null) { TreeNode temp = root.right; root.right = root.left; root.left = temp; Mirror(root.left); Mirror(root.right); } } } static class TreeNode { int val = 0; TreeNode left; TreeNode right; public TreeNode(int val) { this.val = val; } } }
    Processed: 0.013, SQL: 9