首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我需要评论我的算法,在二叉树中找到最长的连续序列

评论算法,在二叉树中找到最长的连续序列的问题,可以使用深度优先搜索(DFS)来解决。

首先,我们需要定义一个辅助函数,该函数将递归地遍历二叉树的每个节点,并返回以当前节点为起点的最长连续序列的长度。

具体步骤如下:

  1. 定义一个全局变量max_length,用于记录最长连续序列的长度。
  2. 定义辅助函数findLongestConsecutive(root, parent_val, length),其中root表示当前节点,parent_val表示父节点的值,length表示以当前节点为起点的连续序列的长度。
  3. 在辅助函数中,首先判断当前节点是否为空,如果为空,则返回0。
  4. 然后,判断当前节点的值是否等于父节点的值加1,如果是,则将length加1,否则,将length重置为1。
  5. 更新max_length,将其与length的较大值进行比较,取最大值。
  6. 递归调用辅助函数,分别对当前节点的左子树和右子树进行遍历,传入当前节点的值和更新后的length。
  7. 返回max_length作为结果。

最后,调用辅助函数findLongestConsecutive(root, None, 0),即可得到二叉树中最长的连续序列的长度。

以下是一个示例的Python实现:

代码语言:txt
复制
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def findLongestConsecutive(root):
    if not root:
        return 0
    
    max_length = 0
    
    def dfs(node, parent_val, length):
        nonlocal max_length
        
        if not node:
            return 0
        
        if parent_val is not None and node.val == parent_val + 1:
            length += 1
        else:
            length = 1
        
        max_length = max(max_length, length)
        
        dfs(node.left, node.val, length)
        dfs(node.right, node.val, length)
    
    dfs(root, None, 0)
    
    return max_length

# 示例用法
root = TreeNode(1)
root.right = TreeNode(3)
root.right.left = TreeNode(2)
root.right.right = TreeNode(4)
root.right.right.right = TreeNode(5)

result = findLongestConsecutive(root)
print(result)  # 输出:3

在这个示例中,我们构建了一个二叉树,并调用findLongestConsecutive函数来找到最长的连续序列,结果为3。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

这篇文章是评论区学到

然后评论区有这样一个评论: comparable future 加 join,啥意思呢? 歪师傅这种经验老道程序员一眼就 get 到了。...使用 CompletableFuture 写法时,如果不指定线程池,也就是这样: 会发什么呢? 程序会正常执行完成: 那么问题就来了:为什么不指定线程池时候,反而没有问题呢?...也不知道,但是知道大力出奇迹。 所以: 把循环扩大到了 10000 次,并且在任务里面 sleep 1s,方便任务快速占满核心线程。 程序运行之前,你觉得线程编号会到多少去?...所以,同样代码,在你电脑上跑,可能就不是 11 了,这个小细节需要注意一下。 现在我们拿到一个 ForkJoinPool 类了,只需要搞懂它工作原理就行了。 剩下部分,就当是一个思考题吧。...另外一个主要原因是因为写过程中翻到了一篇文章:《一次线程池引发线上故障分析》。 我们要找答案就在这篇文章里面: 查阅资料时候看到这篇文章,看完之后,怎么说呢?

15410
  • 字符串中找出连续最长数字串(算法

    描述 输入一个字符串,返回其最长数字子串,以及其长度。若有多个最长数字子串,则将它们全部输出(按原字符串相对位置) 本题含有多组样例输入。...1<=len(字符串)<=200 输出描述: 输出字符串中最长数字字符串和它长度,中间用逗号间隔。如果有相同长度串,则要一块儿输出(中间不要输出空格)。 思路: 1、首选获取到最长数字是多少。...2、从map里获取最长数字有哪些。 3、再根据下标排序。...a8a72a6a5yy98y65ee1r2 复制 输出: 123058789,9 729865,2 复制 说明: 样例一最长数字子串为...123058789,长度为9 样例二最长数字子串有72,98,65,长度都为2 */ public static void main(String[] args) {

    99020

    算法与数据结构眼中样子(1)排序算法

    今天和大家分享系统学习第一大类算法:排序算法,以前写博客时候总会说:排序算法初恋,所以我印象很深。...如果想深入学习排序算法,可以看看《算法(第 4 版)》和《算法导论》相关章节。 目前 B 站视频只讲到「归并排序」,「归并排序」相关例题讲解这两天还在赶,肯定要鸽了,真香啊。...经典问题 刚开始时候,总是「力扣」上找一些很容易解决问题,感兴趣很重要。认为「容易」有两个标准: 不需要任何算法知识,就可以解决问题; 思想很简单,代码需要模仿就好了。...定稿之前,还删去了很多内容,希望这样串讲大家看起来不要太累就好。 有什么好意见和建议,都可以留言告诉。...闲聊 这两天要去录视频了,公众号更新就不会像最近每天都发,但是话题和想要和大家分享内容我会一直准备。 有严重完美主义倾向,它是很严重缺点,由于性格原因,屡教不改,造成了做事很没有效率。

    32530

    Python算法和数据结构:二叉树中找到和为sum所有路径

    思路:先用递归创建一颗二叉树,作为输入;然后对这课二查树进行递归遍历,递归中每遍历一个节点,下次递归和为sum-data;并用一个数组记录遍历过路径,当存在sum时,输出数组中路径。...从树根结点开始往下访问一直到叶结点所经过所有结点形成一条路径。 打印出和与输入整数相等所有路径。...,用来构造树和调用查找算法 return:返回右节点 """ #self.tree = self.build_tree() self.index...args:node是树根节点,每次递归是节点移动 needsum是需要和 data_list里面存是路径 "..._ == "__main__": onNode = test()输出:10543-----------1057-----------1012----------- 欢迎关注订阅号:白话算法

    94910

    不同任务中,应该选择哪种机器学习算法

    当开始研究数据科学时,经常面临一个问题,那就是为特定问题选择最合适算法本文中,将尝试解释一些基本概念,并在不同任务中使用不同类型机器学习算法。...决策树图形可以帮助你了解你在想什么,它们引擎需要一个系统、有记录思维过程。 这个算法想法很简单。每个节点中,我们选择了所有特征和所有可能分割点之间最佳分割。...如果你处理图像,卷积神经网络会显示出很棒结果。非线性是由卷积和池化层来表示,能够捕捉图像性能特点。 ? 为了处理文本和序列,你最好选择重复神经网络。...为了简化你工作,已经准备好了它们主要特征结构化概述。 线性回归和线性分类器:尽管表面上看起来很简单,但它们大量特征上非常有用,在这些特征中,更好算法会因过度拟合而受到影响。...主成分分析:是一个很好选择,它可以减少你特征空间维度,并尽可能减少信息丢失。 神经网络:机器学习算法新时代,可以应用于许多任务,但它们训练需要巨大计算复杂性。

    2K30

    想进大厂,这是你绕不过门槛

    不懂数据结构与算法依旧可以找到工作? 确实可以,根本没有那么多高级开发以及更高岗位频繁用到数据结构和算法,小公司更不用说,只需要功能上线能用就完事。...但就如标题所说,想进大厂,数据结构与算法就是你绕不过门槛,肯定会有人反驳,说“不进大厂也可以好好”,但咱们反问一下,为什么大厂面试必问数据结构与算法?...什么时候时间最差 什么是快排算法;以及什么是稳定性排序,快排是稳定性吗;快排算法最差情况推导公式 2.3 动态规划 手写代码:最长公共连续序列 手写代码:求一个字符串最长回文子串 手写代码:求最大子序和...:括号生成 手写代码:验证二叉搜索树 二叉树最大深度 二叉树最近公共祖先 全排列 3.2 并查集 手写代码:省份数量 手写代码:岛屿数量 手写代码:最长连续数列 3.3 字符串 手写代码:转换成小写字母...手写代码:最长公共前缀 手写代码:有效字母异位词 由于篇幅原因以上问题解析就不放上来了,欢迎评论区一起讨论分享。

    68150

    力扣 (LeetCode) 字节校园 算法与数据结构

    Bytedance-campus-59-Leetcode 力扣 (LeetCode) ️ 字节校园 算法与数据结构  ⚡ 1. 两数之和 2. 两数相加 3. 无重复字符最长子串 4....二叉树中序遍历 102. 二叉树层序遍历 103. 二叉树锯齿形层序遍历 105. 从前序与中序遍历序列构造二叉树 121. 买卖股票最佳时机 124. 二叉树最大路径和 128....最长连续序列 129. 求根节点到叶节点数字之和 135. 分发糖果 141. 环形链表 142. 环形链表 II 143. 重排链表 146. LRU 缓存 151. 反转字符串中单词 152....二叉树中序遍历 102. 二叉树层序遍历 103. 二叉树锯齿形层序遍历 105. 从前序与中序遍历序列构造二叉树 121. 买卖股票最佳时机 124. 二叉树最大路径和 128....最长连续序列 129. 求根节点到叶节点数字之和 135. 分发糖果 141. 环形链表 142. 环形链表 II 143. 重排链表 146. LRU 缓存 151. 反转字符串中单词 152.

    64530

    数据结构错题笔记

    二叉树遍历只是为了应用中找到—种线性次序。...对于前序遍历与中序遍历结果相同二叉树为:所有结点只有右子树二叉树 —棵非空二叉树先序遍历序列与后序遍历序列正好相反,则:此二叉树满足只有一个叶子结点。 线索二叉树是一种物理结构。...哈弗曼树结点个数不能是偶数。 图广度遍历不适用于有向图 图深度遍历适用于有向图 一个有向无环图拓扑排序序列不一定是惟一。 关键路径是事件结点网络中从源点到汇点最长路径。...直接插入排序最好情况下时间复杂度为O(n) 归并排序第一趟结束后不一定选出一个元素放在最终位置上 直接插入排序空间复杂度为O(1) 中序遍历一棵二叉排序树结点就可得到排好序节点序列...线性表是一个无限序列,可以为空 线性表采用链式储存结构其地址连续与否都可以 采用线性探测法处理冲突,可能要探测多个位置,查找成功情况下,所探测这些位置上关键字不一定都是同义词。

    36220

    数据结构面试常见问题总结怎么写_前端数据结构与算法面试题

    大家好,又见面了,是你们朋友全栈君。...,可能有 1 条或多条 Q:关键路径是用什么数据结构实现 A:有向无环图 Q:排序算法介绍 A: 冒泡排序:从左到右依次比较相邻两个元素,如果前一个元素比较大,就把前一个元素和后一个交换位置,重复地进行直到没有再需要交换...选择排序:首先在未排序序列中找到最小(大)元素,存放到排序序列起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列末尾。...以此类推,直到所有元素均排序完毕 插入排序:通过构建有序序列,对于未排序数据,已排序序列中从后向前扫描,找到相应位置并插入。...希尔排序:将整个待排序记录序列分割成为若干子序列分别进行直接插入排序 归并排序:排序过程中,把原来数组变成左右两个数组,然后分别进行排序,当左右子数组排序完毕之后,再合并这两个子数组形成一个新排序数组

    60120

    ​LeetCode刷题实战536: 从字符串生成二叉树

    算法重要性,就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !...你需要从一个包括括号和整数字符串构建一棵二叉树。 输入字符串代表一棵二叉树。 它包括整数和随后0,1或2对括号。 整数代表根值,一对括号内表示同样结构子树。...根据题目示例提示可知,字符串第一个左括号之前数字是根节点,接着两个连续最大括号(如果有)分别为左子树和右子树,对左右子树进行同样递归操作即可,具体看代码。...,如果觉得有所收获,请顺手点个在看或者转发吧,你们支持是最大动力 。...LeetCode刷题实战521:最长特殊序列 Ⅰ LeetCode刷题实战522:最长特殊序列 II LeetCode刷题实战523:连续子数组和 LeetCode刷题实战524:通过删除字母匹配到字典里最长单词

    54921

    ​LeetCode刷题实战128:最长连续序列

    算法重要性,就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !...今天和大家聊问题叫做 最长连续序列,我们先来看题面: https://leetcode-cn.com/problems/longest-consecutive-sequence/ Given an unsorted...题意 给定一个未排序整数数组 nums ,找出数字连续最长序列(不要求序列元素原数组中连续长度。 进阶:你可以设计并实现时间复杂度为 O(n) 解决方案吗?...样例 示例 1: 输入:nums = [100,4,200,1,3,2] 输出:4 解释:最长数字连续序列是 [1, 2, 3, 4]。它长度为 4。...Math.max(res, tmp); } } return res; } } 思路二:字典 遍历数组, 用字典(哈希)记录目前与该值可以组成最长连续序列

    22010

    LeetCode应该怎么刷?

    按题目分类刷题 LeetCode上面的题目都有进行分类,建议一个时间段只刷同一类型题目,可以更全面的认识这一类型数据结构or算法,以加深对此类题型理解。...打乱数组 LeetCode581 最短无序连续子数组 LeetCode945 使数组唯一最小增量 链表操作 LeetCode206 反转链表 LeetCode19 删除链表倒数第N个节点 LeetCode25...LeetCode316 去除重复字母 树遍历 LeetCode94 二叉树中序遍历 LeetCode102 二叉树层次遍历 LeetCode110 平衡二叉树 LeetCode144 二叉树前序遍历...LeetCode300 最长上升子序列 LeetCode1143 最长公共子序列 回溯算法 LeetCode10 正则表达式匹配 LeetCode22 括号生成 LeetCode40 组合总和2 LeetCode46...作为一名转码选手,深感这一路不易。希望分享可以帮助更多小伙伴,踩过坑你们不要再踩!

    45210

    前端应该如何准备数据结构和算法

    经过上面的方法,练习一段时间后,基本 leetcode中等难度问题可以 20min内 AC,另外在最近跳槽过程中,基本所有的算法问题都能很快手写出来,或者很快想到解题思路。...二叉搜索树第k个节点 二叉搜索树后序遍历 5.3.4 二叉树深度 二叉树深度为根节点到最远叶子节点最长路径上节点数。...堆底层实际上是一棵完全二叉树,可以用数组实现 每个节点元素值不小于其子节点 - 最大堆 每个节点元素值不大于其子节点 - 最小堆 堆处理某些特殊场景时可以大大降低代码时间复杂度,例如在庞大数据中找到最大几个数或者最小几个数...与 BFS 不同,更早访问结点可能不是更靠近根结点结点。因此,你 DFS 中找到第一条路径可能不是最短路径。 ?...乘积最大子序列 最长上升子序列 最长回文子序列 6.8 贪心算法 贪心算法:对问题求解时候,总是做出在当前看来是最好做法。

    97230

    前端应该如何准备数据结构和算法

    经过上面的方法,练习一段时间后,基本 leetcode中等难度问题可以 20min内 AC,另外在最近跳槽过程中,基本所有的算法问题都能很快手写出来,或者很快想到解题思路。...二叉搜索树第k个节点 二叉搜索树后序遍历 5.3.4 二叉树深度 二叉树深度为根节点到最远叶子节点最长路径上节点数。...堆底层实际上是一棵完全二叉树,可以用数组实现 每个节点元素值不小于其子节点 - 最大堆 每个节点元素值不大于其子节点 - 最小堆 堆处理某些特殊场景时可以大大降低代码时间复杂度,例如在庞大数据中找到最大几个数或者最小几个数...与 BFS 不同,更早访问结点可能不是更靠近根结点结点。因此,你 DFS 中找到第一条路径可能不是最短路径。 ?...乘积最大子序列 最长上升子序列 最长回文子序列 6.8 贪心算法 贪心算法:对问题求解时候,总是做出在当前看来是最好做法。

    61820

    前端应该如何准备数据结构和算法

    经过上面的方法,练习一段时间后,基本 leetcode中等难度问题可以 20min内 AC,另外在最近跳槽过程中,基本所有的算法问题都能很快手写出来,或者很快想到解题思路。...二叉搜索树第k个节点 二叉搜索树后序遍历 5.3.4 二叉树深度 二叉树深度为根节点到最远叶子节点最长路径上节点数。...堆底层实际上是一棵完全二叉树,可以用数组实现 每个节点元素值不小于其子节点 - 最大堆 每个节点元素值不大于其子节点 - 最小堆 堆处理某些特殊场景时可以大大降低代码时间复杂度,例如在庞大数据中找到最大几个数或者最小几个数...与 BFS 不同,更早访问结点可能不是更靠近根结点结点。因此,你 DFS 中找到第一条路径可能不是最短路径。 ?...乘积最大子序列 最长上升子序列 最长回文子序列 6.8 贪心算法 贪心算法:对问题求解时候,总是做出在当前看来是最好做法。

    80510

    一文梳理面试中数据结构与算法

    实际上,当你有了一定目的性,并且有了合理练习方法,再来学习这部分内容会变得得心应手。 本文中,就来分享一下学习“数据结构”和“算法一些经验和方法。...经过上面的方法,练习一段时间后,基本 leetcode中等难度问题可以 20min内 AC,另外在最近跳槽过程中,基本所有的算法问题都能很快手写出来,或者很快想到解题思路。...二叉搜索树第k个节点 二叉搜索树后序遍历 5.3.4 二叉树深度 二叉树深度为根节点到最远叶子节点最长路径上节点数。...与 BFS 不同,更早访问结点可能不是更靠近根结点结点。因此,你 DFS 中找到第一条路径可能不是最短路径。 ?...乘积最大子序列 最长上升子序列 最长回文子序列 6.8 贪心算法 贪心算法:对问题求解时候,总是做出在当前看来是最好做法。

    73620

    前端知识体系+大厂面试总结(算法篇)

    前端知识体系+大厂面试笔记(工程化篇) 作者主页: https://juejin.cn/user/2594503172831208 正文 之前算法理解,仅仅是为了应付大厂面试 但是两个月算法练习中...希望大家多多指正,一起交流学习,在此表示感谢 一道题解法,有很多种,对应时间复杂度与空间复杂度也各不相同,期待你答案,希望你可以在其中找到算法乐趣 算法 如何学习算法 1、先掌握对应数据结构...,方便小伙伴们热热身 该算法 vue3 diff 算法中有用到,作用是找到最长递归子序列后,可以减少子元素移动次数 一个整数数组 nums,找到其中一组最长递增子序列最长递增子序列是指:子序列所有元素单调递增...使用场景:长度为n数组,随机取m个数,有多少种组合 总结 文中列出了现在市面上比较火一些题目,同时包含了面试中遇到所有算法算法阿里、头条、美团面试中,几乎是必考 特别是二叉树几乎每次都会遇到...有知道小伙伴,麻烦评论区告诉,感谢 如果小伙伴们看了这篇文章后有所收获,那就是最大满足 ❤️ 感谢大家 谢谢你看到最后 如果觉得文章对你有帮助,可以点个,你「赞」是创作最大动力 10w字总结其他篇章

    51310

    软考之路(四)——数据结构与算法(2)之树与二叉树

    上篇博文主要介绍是数据结构线性结构,我们这篇博文介绍非线性结构—树与二叉树先介绍树一些基本概念,树遍历,再介绍二叉树相关概念和特性,以及二叉树遍历,最后再树与二叉树对比,总结...通过一棵树来了解树基本概念,如下图 ? 1、结点度 结点度是子结点个数。例如:结点1有三个字结点2,3,4,所以结点1度为3。...5、内部结点 内部结点是除了根结点以及叶子结点或在分支结点基础之上去掉根结点。例如:上面树内部结点为2,4,8。...一般二叉树性质: 非空二叉树k层上,至多有2k个节点(k>=0) 高度为k二叉树中,最多有2k+1-1个节点(k>=0) 对于任何一棵非空二叉树,如果叶节点个数为n0,度数为2节点个数为n2,...如果2k+2 <= n-1,则下标为k节点右子节点下标为2k+2;否则,下标为k节点没有右子节点 满二叉树性质: 二叉树中,叶节点个数比分支节点个数多1 二叉树遍历 ?

    41510

    盘点互联网公司最常见面试编程题

    力扣官网进一步介绍了训练和准备面试算法方法,首先理清楚问题类型,其次,掌握常用算法和数据结构。 对于问题类型,力扣给出了下面这幅图,这幅图还是比较笼统,下面补充一些愚见。...常用一些算法思想或类别: 1) 动态规划,常考,重要是找到初始条件,状态迭代方程,比如机器人不同行走路线个数等;还有背包问题、最长序列等等,题目相当灵活; 2) 字符串:判断是否为回文字符串,子串...二叉树最近公共祖先 297. 二叉树序列话与反序列化 线段树 218. 天际线问题 排序 179. 最大数 324. 摆动排序II 二分检索 162. 寻找峰值 287. 寻找重复数 315....计算右侧小于当前元素个数 滑动窗口 395. 至少有K个重复字符最长子串 动态规划 124. 二叉树最大路径和 128. 最长连续序列 198. 打家劫舍 279. 完全平方数 300....反转字符串 作为补充,还有一类题目常考,并且如果平时不训练,考场上不太容易快速想出来,就是一类深度优先搜索和回溯相结合题目,leetcode题库中这类相似的有好几道: 如何求 1~n 这连续 n

    2.6K20
    领券