Leetcode日记 226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

Leetcode日记 226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

二叉树简介

  • 二叉树(Binary Tree)是一种特殊的树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。在二叉树中,通常还有一个特殊的节点,称为根节点,它是整棵树的起点。二叉树的每个节点最多有两个子节点,但子节点可以为空。

二叉树分类

  • 二叉树有多种类型,包括:

  • 满二叉树(Full Binary Tree):除了叶子节点外,每个节点都有两个子节点。

  • 完全二叉树(Complete Binary Tree):对于任意节点,如果其左子树是满二叉树,且其右子树也是满二叉树,则称该二叉树为完全二叉树。或者,除最后一层外,其他层的节点数达到最大个数,且最后一层的节点集中在左侧。

  • 平衡二叉树(Balanced Binary Tree):左右两个子树的高度差的绝对值不超过1,且每个子树也是平衡二叉树。

  • 二叉搜索树(Binary Search Tree, BST):对于任意节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。

  • AVL树:是一种自平衡的二叉搜索树,任何节点的两个子树的高度最大差别为1。

  • 红黑树:是一种自平衡的二叉搜索树,通过对节点着色(红色或黑色)和旋转规则来维护树的平衡。

  • 二叉树在计算机科学中有许多应用,如数据库索引、文件系统、编译器设计、表达式树等。对于二叉树,有多种遍历方法,包括前序遍历、中序遍历和后序遍历。这些遍历方法对于处理二叉树中的数据非常有用。

  • 例如,二叉树的前序遍历顺序是:根节点 -> 左子树 -> 右子树。后序遍历顺序是:左子树 -> 右子树 -> 根节点。中序遍历顺序是:左子树 -> 根节点 -> 右子树。

解题方法

  • 我们遍历二叉树,在遍历时,我们交换他的左右子节点,并且在最后返回他的头结点。
python 复制代码
class TreeNode(object):
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
root = TreeNode(1)  
root.left = TreeNode(2)  
root.right = TreeNode(3)  
root.left.left = TreeNode(4)  
root.left.right = TreeNode(5)  
root.right.left = TreeNode(6)  
root.right.right = TreeNode(7) 
from typing import Optional
class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        if not root :
            return root
        begin = TreeNode(0)
        begin.next = root
        temp = TreeNode(0)
        self.digui(root,temp)
        return begin.next

    def digui(self,root,temp):
        if root :
            temp = root.right
            root.right = root.left
            root.left = temp

        if root.left :
            self.digui(root.left,temp)
        if root.right :
            self.digui(root.right,temp)
a = Solution().invertTree(root)
print(a)
        

制作不易,感谢三连,谢谢啦

相关推荐
Cha0DD14 分钟前
【由浅入深探究langchain】第二十集-SQL Agent+Human-in-the-loop
人工智能·python·ai·langchain
Cha0DD15 分钟前
【由浅入深探究langchain】第十九集-官方的SQL Agent示例
人工智能·python·ai·langchain
阿豪学编程1 小时前
LeetCode724.:寻找数组的中心下标
算法·leetcode
智算菩萨2 小时前
【Tkinter】4 Tkinter Entry 输入框控件深度解析:数据验证、密码输入与现代表单设计实战
python·ui·tkinter·数据验证·entry·输入框
墨韵流芳2 小时前
CCF-CSP第41次认证第三题——进程通信
c++·人工智能·算法·机器学习·csp·ccf
七夜zippoe2 小时前
可解释AI:构建可信的机器学习系统——反事实解释与概念激活实战
人工智能·python·机器学习·可解释性·概念激活
csdn_aspnet2 小时前
C# 求n边凸多边形的对角线数量(Find number of diagonals in n sided convex polygon)
开发语言·算法·c#
禹中一只鱼3 小时前
【力扣热题100学习笔记】 - 哈希
java·学习·leetcode·哈希算法
凌波粒3 小时前
LeetCode--349.两个数组的交集(哈希表)
java·算法·leetcode·散列表
paeamecium4 小时前
【PAT甲级真题】- Student List for Course (25)
数据结构·c++·算法·list·pat考试