leetcode:翻转二叉树

力扣226:

翻转一棵二叉树。

示例:

输入:

     4

   /   \

  2     7

 / \   / \

1   3 6   9

输出:

     4

   /   \

  7     2

 / \   / \

9   6 3   1

备注:

这个问题是受到 Max Howell 的 原问题 启发的 :

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

Tips:Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。在 2009 年由马克斯·霍威尔(Max Howell)写成,他是一名 OS X/iOS 业界知名的软件工程师,是早先著名的网络电台 Last.fm 的首席客户端开发者、Twitter 客户端 TweetDeck 的首席移动开发者。然后马克斯·霍威尔在Google面试后在推特上吐槽了一把:

 

根据 Howell 在 Twitter 上的对话记录,他当时是去面试一个 iOS 的职位,「我当真可以算 iOS 业界的专家了,那家伙几乎没问我任何有关 iOS 的问题。」

不过到底马克斯·霍威尔是不是仅仅因为这个题目被Google拒掉的,这个就不得而知了,因为像Google这样的公司招聘一个人,算法能力是极其重要的能力和门槛,但却不是唯一的能力。

方法

还是用递归来解决,先递归调用反转根节点的左孩子,然后递归调用反转根节点的右孩子,然后左右交换根节点的左孩子和右孩子。

/**
 * Definition for a binary tree node.
 * public 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;
 *     }
 * }
 */
class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root==null)
            return null;
        invertTree(root.left);
        invertTree(root.right);
        TreeNode tem=root.left;
        root.left=root.right;
        root.right=tem;
        return root;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值