leetcode尊享面试100题(549二叉树最长连续序列||,python)

题目不长,就是分析时间太久了。

思路使用dfs深度遍历,先想好这个函数返回什么,题目给出路径可以是子-父-子的路径,那么1-2-3可以,3-2-1也可以,那么考虑dfs返回两个值,对于当前节点node来说,返回一个顺序的长度的最大值p,一个逆序长度的最大值b,初始值都为1。例如,当前节点值为3,下面有两个子节点1-2,那么p为3,b仍为1。

这是返回的值,那么对于当前节点,以node为终点的最大长度=max(p,b),还有一种经过node节点的路径需要考虑,例如,左节点为1,右节点为3,当前节点为2。

这题需要把所有的情况罗列一遍,就是多几个if语句!!!

python 复制代码
class Solution:
    def __init__(self):
        self.m = 1

    def longestConsecutive(self, root: Optional[TreeNode]) -> int:
        self.dfs(root)
        return self.m
    
    def dfs(self, node):
        if not node: return 0, 0
        p, b, m = 1, 1, 1
        p1, b1 = self.dfs(node.left)
        p2, b2 = self.dfs(node.right)
        if node.left and abs(node.left.val - node.val) == 1:
            if node.left.val - node.val == -1:
                p = max(p, p1 + 1)
            else:
                b = max(b, b1 + 1)
        if node.right and abs(node.right.val - node.val) == 1:
            if node.right.val - node.val == -1:
                p = max(p, p2 + 1)
            else:
                b = max(b, b2 + 1)
        if node.left and node.right and node.left.val - node.val ==  node.val - node.right.val:
            if node.left.val - node.val == -1:
                m = b2 + p1 + 1
            elif node.left.val - node.val == 1:
                m = b1 + p2 + 1
        self.m = max(self.m, p, b, m)
        return p, b
相关推荐
王小义笔记6 分钟前
大模型微调步骤与精髓总结
python·大模型·llm
大雷神14 分钟前
HarmonyOS APP<玩转React>开源教程二十四:错题本功能
react.js·面试·开源·harmonyos
Cosolar24 分钟前
解锁LLM能力:14种Prompt策略全解析与实践指南
人工智能·后端·面试
源码之家1 小时前
计算机毕业设计:Python汽车销量数据采集分析可视化系统 Flask框架 requests爬虫 可视化 车辆 大数据 机器学习 hadoop(建议收藏)✅
大数据·爬虫·python·django·flask·课程设计·美食
Roselind_Yi1 小时前
【吴恩达2026 Agentic AI】面试向+项目实战(含面试题+项目案例)-2
人工智能·python·机器学习·面试·职场和发展·langchain·agent
2401_827499991 小时前
python核心语法01-数据存储与运算
java·数据结构·python
一直会游泳的小猫1 小时前
ClaudeCode完整学习指南
python·ai编程·claude code·claude code指南
第一程序员1 小时前
Python与容器化:Docker和Kubernetes实战
python·github
JaydenAI1 小时前
[RAG在LangChain中的实现-04]常用的向量存储和基于向量存储的检索器
python·langchain·ai编程
Roselind_Yi1 小时前
【吴恩达2026 Agentic AI】面试向+项目实战(含面试题+项目案例)-1
人工智能·python·面试·职场和发展·langchain·gpt-3·agent