反转二叉树

原创 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]翻转二叉树

1.问题描述Invert a binary tree.For example: to Google: 90% of our engineers use the software you wr...

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

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

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

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

lintcode 翻转二叉树

1:问题描述  翻转一棵二叉树 样例 1 1 / \ / \ 2 3 => 3 2 / \ 4 4 2:解题思路...

输入一个二叉树,输出其镜像(二叉树反转)

输入一个二叉树,输出其镜像(二叉树反转)/* public class TreeNode { int val = 0; TreeNode left = null; TreeNo...

翻转二叉树(C++)

用递归的方法翻转二叉树

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

二叉树的反转镜像

二叉树的镜像就是二叉树对称的二叉树,比如 镜像之后 就是交换每一非叶子节点的左子树指针和右子树指针 1:递归,如果节点为空,返回,否则交换左右孩子指针;递归镜像节点的左...

翻转二叉树 - C++

class Solution { public: /** * @param root: a TreeNode, the root of the binary tree * ...

leetcode 226 Invert Binary Tree 翻转二叉树

大牛没有能做出来的题,我们要好好做一做     Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:反转二叉树
举报原因:
原因补充:

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