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.

    递归后序遍历, 因为有返回值, 所以要后序遍历, 在递归回溯后返的时候进行操作:

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

    一般在改变递归函数的输入值的时候加上 这句, 防止递归两次null改变两次输入值

    if (root.left == null && root.right == null) {
    return root;
    }

    先序遍历

    public TreeNode invertTree(TreeNode root) {
            if (root == null) {
                return null;
            }
            Stack<TreeNode> stack = new Stack<TreeNode>();
            stack.push(root);
            while (!stack.isEmpty()) {
                TreeNode node = stack.pop();
                TreeNode left = node.left;
                TreeNode right = node.right;
                if (left != null) {
                    stack.push(left);
                }
                if (node.right != null) {
                    stack.push(node.right);
                }
                node.left = right;
                node.right = left;
               
            }
            return root;
        }
    

      

  • 相关阅读:
    drf之序列化组件
    RESTful API和Django的drf安装及使用
    Django之CBV中View、APIView源码分析
    Ajax以及crsf的校验
    Django之中间件
    Django之Auth用户认证模块
    Django之cookie、session以及FBV和CBV
    Django之Forms组件
    Django之ORM
    Django基本知识、路由层、视图层、模版层
  • 原文地址:https://www.cnblogs.com/apanda009/p/7267276.html
Copyright © 2011-2022 走看看