zoukankan      html  css  js  c++  java
  • Invert Binary Tree

    Invert a binary tree.

         4
       /   
      2     7
     /    / 
    1   3 6   9

    to

         4
       /   
      7     2
     /    / 
    9   6 3   1

    Trivia:
    This problem was inspired by this original tweet by Max Howell:

    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.

    分析:翻转二叉树

    思路1:

    使用递归的方式,时间复杂度为o(n),空间复杂度为o(n)

    JAVA CODE

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public TreeNode invertTree(TreeNode root) {
            if(root == null||(root.left==null&&root.right==null))
                return root;
            if(root.left!=null)
                invertTree(root.left);
            if(root.right!=null)
                invertTree(root.right);
            TreeNode tempL = root.left;
            TreeNode tempR = root.right;
            root.left = tempR;
            root.right = tempL;
            return root;
        }
    }

    思路2:

    使用迭代的方式,时间复杂度为o(n),空间复杂度为o(1)

    JAVA CODE

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public TreeNode invertTree(TreeNode root) {
            if(root == null)
                return root;
            Stack<TreeNode> nodes = new Stack<>();
            nodes.push(root);
            while(!nodes.isEmpty()){
                TreeNode cur = nodes.pop();
                if(cur.right!=null)
                    nodes.push(cur.right);
                if(cur.left!=null)
                    nodes.push(cur.left);
                TreeNode temp = cur.left;
                cur.left = cur.right;
                cur.right = temp;
            }
            return root;
        }
    }
  • 相关阅读:
    HTML5-拖拽
    POJ1182食物链(并查集)
    欧拉函数之HDU1286找新朋友
    Another kind of Fibonacce(矩阵快速幂,HDU3306)
    我的第一道java_A+B
    bestcoder#33 1002 快速幂取余+模拟乘,组合数学
    快速幂模版
    bestcoder#33 1001 高精度模拟
    poj2446_二分图
    poj3984_bfs+回溯路径
  • 原文地址:https://www.cnblogs.com/baichangfu/p/7476698.html
Copyright © 2011-2022 走看看