二叉树的镜像

题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。

思路:通过BFS来遍历每个结点,交换当前结点的左右孩子结点即交换左右子树。

步骤:

1 如果根结点为空或者只有一个结点,则结束。

2 创建实现了Queue接口的LinkedList对象。

3 根结点入队列。

4 通过BFS来遍历每个结点,交换当前结点的左右孩子结点。

Java代码:

import java.util.Queue;
import java.util.LinkedList;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public void Mirror(TreeNode root) {
        if (root == null || (root.left == null && root.right == null)) {
            return;
        }
        
        // 递归实现,交换左右子树
        /**TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        
        Mirror(root.left);
        Mirror(root.right);**/
        
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.add(root);
            
        while (!queue.isEmpty()) {
            TreeNode cur = queue.remove();

            TreeNode left = cur.left;
            TreeNode right = cur.right;

            // 避免都是null
            if (left != right) {
                if (left != null) {
                    queue.add(left);
                }
                if (right != null) {
                    queue.add(right);
                }

                TreeNode temp = left;
                cur.left = right;
                cur.right = temp;
            }
        }
    }
}

 

posted on 2025-11-29 15:03  王景迁  阅读(1)  评论(0)    收藏  举报

导航