• 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;
        }
    

      

  • 相关阅读:
    Vue自定义指令
    Vue实例生命周期
    Vue学习目录
    Vue表单控件绑定
    Vue事件处理
    Vue数组更新及过滤排序
    Vue模板逻辑
    Vue模板内容
    Vue实例对象的数据选项
    Vue组件基础用法
  • 原文地址:https://www.cnblogs.com/apanda009/p/7267276.html
Copyright © 2020-2023  润新知