zoukankan      html  css  js  c++  java
  • 【嘎】二叉树-226. 翻转二叉树

    题目:

    翻转一棵二叉树。

    示例:

    输入:

    4
    /
    2 7
    / /
    1 3 6 9
    输出:

    4
    /
    7 2
    / /
    9 6 3 1

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/invert-binary-tree

    下面是错误的解答:

    class Solution {
        public TreeNode invertTree(TreeNode root) {
            TreeNode left = root.left;
            TreeNode right = root.right;
            
            if (left != null) {
                invertTree(left);
            }
            if (right != null) {
                invertTree(right);
            }
            if (left != null && right != null) {
                int leftval = left.val;
                int rightval = right.val;
                right.val = leftval;
                left.val = right.val;
            }
           return root;
        }
    }

    然后。。虽然知道是错的,但是想不出来怎么才是对的

        // 先序遍历,根左右 从上向下交换
        public TreeNode invertTree(TreeNode root) {
            if (root == null) return null;
            TreeNode rightnode = root.right;
            root.right = invertTree(root.left); // 交换左子树结果赋值给右子树,所以要先记录右子树
            root.left = invertTree(rightnode);
            return root;
        }
        // 中序遍历,左根右
        public TreeNode invertTree(TreeNode root) {
            if (root == null) return null;
            invertTree(root.left); // 递归找到左节点
            TreeNode rightnode = root.right;
            root.right = root.left;
            root.left = rightnode;
            // 递归找到右节点 继续交换:因为此时左右节点已经交换了,所以此时的右节点为root.left
            invertTree(root.left);
         return root; }
    // 后序遍历,左右根 从下向上交换 public TreeNode invertTree(TreeNode root) { if (root == null) return null; TreeNode leftnode = invertTree(root.left); TreeNode rightnode = invertTree(root.right); root.right = leftnode; root.left = rightnode; return root; }
    越努力越幸运~ 加油ヾ(◍°∇°◍)ノ゙
  • 相关阅读:
    数据库系统概念PDF下载
    数据库系统基础教程PDF下载
    推荐系统技术、评估及高效算法PDF下载
    系统分析与设计方法PDF下载
    像计算机科学家一样思考pythonPDF下载
    学习bashPDF下载
    厚书读薄丨《Vim实用技巧》第一部分 模式
    Code Server 是什么?
    ubuntu磁盘分区
    Linux自学之旅-基础命令(umask默认权限)
  • 原文地址:https://www.cnblogs.com/utomboy/p/12698358.html
Copyright © 2011-2022 走看看