2025年- H26-Lc134- 226. 翻转二叉树(树)---java版

1.题目描述

在这里插入图片描述

2.思路

递归调用左右子树,就是调换左右子树的值。每个节点调换左右子树。
从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。如果当前遍历到的节点 root 的左右两棵子树都已经翻转,那么我们只需要交换两棵子树的位置,即可完成以 root 为根节点的整棵子树的翻转。

3.代码实现


class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode() {};
    TreeNode(int val) { this.val = val; }
    TreeNode(int val, TreeNode left, TreeNode right) {
         this.val = val;
         this.left = left;
         this.right = right;
     }
}

public class H226 {
    public TreeNode invertTree(TreeNode root) {

        if(root==null)
        {
          return null;
        }
        else
        {
            TreeNode left=invertTree(root.left);
            TreeNode right=invertTree(root.right);
            root.left=right;
            root.right=left;
            return root;

        }



    }
    // 前序遍历输出翻转后的树结构(根 -> 左 -> 右)
    public static void qianxu(TreeNode root)
    {
        if(root==null)
        {
            return ;
        }
        System.out.print(root.val+" ");
        qianxu(root.left);
        qianxu(root.right);
    }
    public static void main(String[] args)
    {
    TreeNode node3=new TreeNode(3,null,null);
    TreeNode node2=new TreeNode(2);
    TreeNode root=new TreeNode(1,node2,node3);

    H226 test12=new H226();
    TreeNode tree=test12.invertTree(root);
    System.out.print("输出前序遍历的结果:");
    qianxu(tree);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值