题解 | #二叉树的镜像#

二叉树的镜像

http://www.nowcoder.com/practice/a9d0ecbacef9410ca97463e4a5c83be7

头节点放入队列中,  当队列不为空的时候一致进行处理

弹出的节点,先将其左右子树进行交换, 再将变换后的左,右节点一次放入队列
package com.yzcOfffer.JZ27;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @author YZC
 * @date 2021/12/6 17:15
 */

class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    @Override
    public String toString() {
        return "TreeNode{" +
                "val=" + val +
                ", left=" + left +
                ", right=" + right +
                '}';
    }

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


public class Solution {
    public static void main(String[] args) {
        TreeNode node1 = new TreeNode(8);
        TreeNode node2 = new TreeNode(6);
        TreeNode node3 = new TreeNode(10);
        TreeNode node4 = new TreeNode(5);
        TreeNode node5 = new TreeNode(7);
        TreeNode node6 = new TreeNode(9);
        TreeNode node7 = new TreeNode(11);
        node1.left = node2;
        node1.right = node3;
        node2.left = node4;
        node2.right= node5;
        node3.right = node7;
        node3.left = node6;
        System.out.println(Mirror(node1));
    }

    public static TreeNode Mirror(TreeNode root) {
        if (root == null) {
            return null;
        }

        Queue<TreeNode> queue = new LinkedList<>();

        //头节点加入队列
        queue.add(root);

        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            //交换node节点的两个子节点
            TreeNode left = node.left;
            node.left = node.right;
            node.right = left;
            //如果当前节点的左子树不为空,就把左子树节点加入到队列中
            if (node.left != null) {
                queue.add(node.left);
            }
            //如果当前节点的右子树不为空,就把右子树
            //节点加入到队列中
            if (node.right != null) {
                queue.add(node.right);
            }
        }
        return root;
    }
}


全部评论

相关推荐

牛客nb666号:见天才的门槛罢了查看图片
点赞 评论 收藏
分享
不知道怎么取名字_:玩游戏都写到简历上了啊
投递BOSS直聘等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务