【Leetcode100】算法模板之二叉树

感谢博主的讲解

二叉树

适用场景

  1. 递归:
    (1)子问题与原问题的关系
    (2)结束递归条件

例题

1.翻转二叉树

首先分析(1),子问题是翻转每个小树,翻转后交换root结点【以及如何回溯】。----2 3

(2)终止条件为遇到NULL结点。-----1

抄袭:

因此本题步骤

1.子问题,翻转左右,right\left变量临时记录翻转后的树【递归】

2.将翻转结果赋值给root.left

最终子问题都处理完,返回root

c 复制代码
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def invertTree(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: Optional[TreeNode]
        """

        # 3.递归终止的条件
        if root is None:
            return root

        
        # 1.子问题翻转
        left = self.invertTree(root.left) # left保存翻转结果
        right =self.invertTree(root.right)

        # 2. exchange
        root.left = right # 替换
        root.right = left

        return root

2.最大深度

3.中序遍历

4. 公共祖先

相关推荐
Wei&Yan19 小时前
数据结构——顺序表(静/动态代码实现)
数据结构·c++·算法·visual studio code
团子的二进制世界20 小时前
G1垃圾收集器是如何工作的?
java·jvm·算法
吃杠碰小鸡20 小时前
高中数学-数列-导数证明
前端·数学·算法
故事不长丨20 小时前
C#线程同步:lock、Monitor、Mutex原理+用法+实战全解析
开发语言·算法·c#
long31620 小时前
Aho-Corasick 模式搜索算法
java·数据结构·spring boot·后端·算法·排序算法
近津薪荼20 小时前
dfs专题4——二叉树的深搜(验证二叉搜索树)
c++·学习·算法·深度优先
熊文豪20 小时前
探索CANN ops-nn:高性能哈希算子技术解读
算法·哈希算法·cann
熊猫_豆豆21 小时前
YOLOP车道检测
人工智能·python·算法
艾莉丝努力练剑21 小时前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
偷吃的耗子21 小时前
【CNN算法理解】:CNN平移不变性详解:数学原理与实例
人工智能·算法·cnn