zoukankan      html  css  js  c++  java
  • leecode刷题(24)-- 翻转二叉树

    leecode刷题(24)-- 翻转二叉树

    翻转二叉树

    翻转一棵二叉树。

    示例:

    输入:

         4
       /   
      2     7
     /    / 
    1   3 6   9
    

    输出:

         4
       /   
      7     2
     /    / 
    9   6 3   1
    

    备注:
    这个问题是受到 Max Howell 原问题 启发的 :

    谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。


    思路

    二叉树问题,我们首先要想到的使用递归的方式来解决,有了这个思路,处理这道问题就很简单了:先互换根节点的左右节点,然后递归地处理左子树,再递归地处理右子树,直到所有的节点互换完,最后我们把 root 返回,这样便完成了二叉树的反转。

    代码如下

    Java描述:

    /**
     * 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) {
                TreeNode temp = root.left;
                root.left = root.right;
                root.right = temp;
                
                invertTree(root.left);
                invertTree(root.right);
            }
            return root;
        }
    }
    

    最近在复习python,这里也写一下python描述:

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def invertTree(self, root: TreeNode) -> TreeNode:
            if root:
                root.left, root.right = root.right, root.left
    
                self.invertTree(root.left)
                self.invertTree(root.right)
    
            return root
    
  • 相关阅读:
    Android中echarts使用
    小程序搜索定位导航
    去除数组对象中的某属性相同时删除整个对象
    小程序rtmp监控视频播放
    小程序定义优惠券样式
    小程序购物车实现
    JavaScript Cookie
    JqueryValidate使用
    oracel 创建表空间、用户、导入数据库
    跨域访问Jquery实现[转]
  • 原文地址:https://www.cnblogs.com/weixuqin/p/10807734.html
Copyright © 2011-2022 走看看