关闭

反转二叉树

标签: 二叉树反转
2494人阅读 评论(0) 收藏 举报
分类:

反转二叉树,因为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;
    }
}
1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

翻转二叉树(递归与非递归)

翻转一棵二叉树样例 1 1 / \ / \ 2 3 => 3 2 / \ 4 4 递归版本先翻转左子树,后翻转右子树,然...
  • zwhlxl
  • zwhlxl
  • 2015-08-12 06:47
  • 2782

[数据结构][Leetcode]翻转二叉树

1.问题描述Invert a binary tree.For example: to Google: 90% of our engineers use the software you wr...
  • u014359097
  • u014359097
  • 2015-12-08 22:16
  • 1402

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

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

翻转二叉树(C++)

用递归的方法翻转二叉树
  • light_bo
  • light_bo
  • 2015-06-25 21:39
  • 2243

反转二叉树,哈哈

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

反转二叉树--递归和非递归

【如题】 对一棵二叉树进行反转,即各个节点的左右子树进行反转。 【方法一】非递归 层序遍历:每遍历一个结点,对其左右结点进行交换。 交换根结点的左右子树; 交换第二层结点的左右子树 。。。。。。。...
  • suibianshen2012
  • suibianshen2012
  • 2016-07-29 20:39
  • 1497

LeetCode--Invert Binary Tree (反转二叉树)Python

题目: 给定一个二叉树,将其对称反转。样例如下。 解题思路: 可以发现只要将二叉树从根节点出发,把每一个节点的左子树和右子树对称交换,即可得到整个二叉树的对称交换结果。故使用递归进行反转 ...
  • xiaoxiaoley
  • xiaoxiaoley
  • 2017-12-12 10:47
  • 37

二叉树的翻转 Python

还记得在4月时候的腾讯笔试时候就有这道题目,当时是要C++实现,然而我没学过C++,正好最近正在研究算法,就用Python写吧,其实很简单,之后还会把其他树结构的代码也贴上来。 class Node...
  • qq_33848737
  • qq_33848737
  • 2017-08-03 15:15
  • 157

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

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

lintcode 翻转二叉树

1:问题描述  翻转一棵二叉树 样例 1 1 / \ / \ 2 3 => 3 2 / \ 4 4 2:解题思路...
  • wangyukl
  • wangyukl
  • 2017-04-13 16:59
  • 410
    个人资料
    • 访问:1341581次
    • 积分:12808
    • 等级:
    • 排名:第1251名
    • 原创:305篇
    • 转载:98篇
    • 译文:1篇
    • 评论:146条
    最新评论