反转二叉树

原创 2016年05月30日 16:01:30

反转二叉树,因为Max Howell(Homebrew,mac版的apt-get作者 )出名:
Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.

在leetcode上找了这道题的解答

1.递归版本

/**
 * LeetCode 226 - Invert Binary Tree
 * @文件名称 Solution.java
 * @文件作者 Tsybius2014
 * @创建时间 2016年2月11日 下午10:34:59
 */
public class Solution {
    /**
     * 翻转二叉树
     * @param root 二叉树的根
     * @return
     */
    public TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return root;
        }
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        invertTree(root.left);
        invertTree(root.right);
        return root;
    }
}

2.非递归版本

import java.util.Stack;

/**
 * LeetCode 226 - Invert Binary Tree
 * @文件名称 Solution.java
 * @文件作者 Tsybius2014
 * @创建时间 2016年2月11日 下午10:34:59
 */
public class Solution {
    /**
     * 翻转二叉树
     * @param root 二叉树的根
     * @return
     */
    public TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return root;
        }
        Stack<TreeNode> stack = new Stack<TreeNode>();
        stack.push(root);
        while (!stack.isEmpty()) {
            TreeNode node = stack.peek();
            stack.pop();
            if (node.left != null) {
                stack.push(node.left);
            }
            if (node.right != null) {
                stack.push(node.right);
            }
            TreeNode temp = node.left;
            node.left = node.right;
            node.right = temp;
        }
        return root;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

leetcode 226 Invert Binary Tree 翻转二叉树

大牛没有能做出来的题,我们要好好做一做     Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to ...

反转二叉树,哈哈

这个问题因为前段时间一个大牛工程师Max Howell面试谷歌都火了,后来这家伙去了苹果。。我也不知道说什么了,谷姑娘把人家活生生的给拒了。 我今天也试着写了一下,递归版本的很easy的就写了出来。...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

反转二叉树(二叉树的镜像)

输入一个二叉树,输出其镜像。     如下图,即交换所有节点的左右子树。     这里提供两种思路:使用递归和不使用递归。     使用的二叉树定义如下: public class Tree...

【数据结构】二叉树的翻转递归与非递归实现

二叉树的翻转也是递归的过程,左子树转到右子树,右子树转到左子树。假设有这样的一棵二叉树: 它翻转后应该是这样子的: 代码实现: package 二叉树.翻转; import java.uti...
  • e_one
  • e_one
  • 2016-04-05 14:26
  • 5450

反转二叉树----java实现

实现二叉树的反转 示例: 原二叉树: 4 / \ 2 7 / \ / \ 1 3 6 9 反转后的二叉树: 4 / \ 7 ...

java 反转二叉树算法

题目:Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9to 4 / \ 7 2 ...

[Java]Invert Binary Tree翻转二叉树

leetcode 原题链接:https://leetcode.com/problems/invert-binary-tree/ Invert a binary tree. 4 ...

【LeetCode-面试算法经典-Java实现】【226-Invert Binary Tree(反转二叉树)】

【226-Invert Binary Tree(反转二叉树)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-Jun-Ch...

图算法之如何反转一颗二叉树

一个题目难倒一个英雄好汉。这个题目曾让Homebrew的作者失去了一次进入Google工作的机会。在这里,我们不讨论是非,只聊技术!我个人认为,算法和数据结构还是要懂一点的。因为算法和数据结构不仅能解...

反转二叉树

在上篇《简单二叉树实现》的基础上实现二叉树的反转目的如下图 代码 相比之前的代码添加反转函数 “` //反转 public void Reversal() { reversal(re...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)