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;
        }
    }
  • 相关阅读:
    js 运算符优先级
    原生js获取样式
    RGBA 与opacity
    闭包(自己的学习+理解~~水水的)
    css 单位-px、em、rem、百分比
    js之正则1
    querySelector和querySelectorAll
    关于瀑布流的算法(转淘宝ued)
    瀑布流的几个注意点
    jsonp跨域
  • 原文地址:https://www.cnblogs.com/baichangfu/p/7476698.html
Copyright © 2011-2022 走看看