二叉树的镜像—输入输出处理

这篇博客介绍了如何实现二叉树的镜像操作,通过递归和栈的方式进行节点交换,然后利用层序遍历验证镜像后的结果。提供了完整的Java代码实现,包括TreeNode类、镜像函数、层序遍历函数以及树的构建和打印。
摘要由CSDN通过智能技术生成

剑指 Offer 27. 二叉树的镜像
比较简单,可以采用递归也可以借助栈操作。

思路

在处理输入时,建立一个TreeNode类,并生成树,镜像之后比较层序遍历结果。

代码

class TreeNode{
    TreeNode left;
    TreeNode right;
    int val;
    public TreeNode(int val){this.val = val;}
}
public class Main0528 {
	 public static TreeNode mirrorTree(TreeNode root) {
        //递归 此函数的作用是返回以root为根节点的镜像树
        //对于左右子节点,递归调用此函数,再对结果进行交换
        if(root == null) return null;
        TreeNode l = mirrorTree(root.right);
        TreeNode r = mirrorTree(root.left);
        root.left = l;
        root.right = r;
        return root;
    }
    //层序遍历打印树
    public static void bfs(TreeNode root){
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty()){
            int size = queue.size();
            for(int i = 0; i < size; i++){
                TreeNode node = queue.poll();
                System.out.print(node.val + " ");
                if(node.left != null){
                    queue.add(node.left);
                }
                if(node.right != null){
                    queue.add(node.right);
                }
            }
        }
    }
    public static TreeNode build(){
        TreeNode root = new TreeNode(4);
        TreeNode left = new TreeNode(2);
        TreeNode left1 = new TreeNode(1);
        TreeNode right1 = new TreeNode(3);
        TreeNode right = new TreeNode(7);
        TreeNode left2 = new TreeNode(6);
        TreeNode right2 = new TreeNode(9);
        root.left = left;
        root.right = right;
        left.left = left1;
        left.right = right1;
        right.left = left2;
        right.right = right2;
        return root;
    }
    public static void main(String[] args) {
        TreeNode root = build();
        bfs(root);
        mirrorTree(root);
        System.out.println();
        bfs(root);
    }
}
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值