树中始终向左|向右的下降路径的最大长度

2024-04-08

我正在准备技术面试,所以基本上从一开始就学习算法:) 我们得到了 BST。我需要找到其中 desc 路径的最大长度,该路径总是向左或向右 换句话说,示例树的下降路径是2,即15-10-6

   5
  / \
2     15
     /
    10
   / \ 
  6   14

我对算法问题非常陌生。解决这个问题的步骤是什么?

我的想法是使用 DFS 和计数器来存储最长路径。 但我不知道如何使用递归来完成这项工作,而递归对于这种数据结构来说似乎更自然。

有什么建议/方向吗?


措辞有点令人困惑,但我认为你的意思是最大

  • 从任意节点开始然后仅向左延伸的路径的最大长度,或者
  • 从任意节点开始然后仅向右的路径的最大长度。

您分两遍执行此操作,一次查找最大左路径,另一次查找最大右路径(然后取这两条路径中的最大值)。或者,您可以一次性完成这两项工作。

对于每个节点,您需要知道三个值:

  1. 从该节点开始的左路径的长度,
  2. 从该节点开始的正确路径的长度,以及
  3. 从该节点或其子节点之一开始的最长路径的长度。

如果您以递归方式执行此操作,这意味着递归应返回这三个值,可能作为一个小数组或作为一个简单的三字段对象。

这看起来像

Results calculate(Tree node) {
    if (node == null) return new Results(0,0,0);
    else {
        Results leftResults = calculate(node.left);
        Results rightResults = calculate(node.right);
        int leftLength = 1 + leftResults.leftLength;
        int rightLength = 1 + rightResults.rightLength;
        int maxLength = Math.max(Math.max(leftLength, rightLength), 
                                 Math.max(leftResults.maxLength, rightResults.maxLength));
        return new Results(leftLength, rightLength, maxLength);
    }
}

总体结果就是calculate(root).maxLength.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树中始终向左|向右的下降路径的最大长度 的相关文章

  • 为什么这不会绘制图像?

    我想做的是 当我运行应用程序时 它会启动线程并且图像显示 3 秒 3000 毫秒 然后线程停止运行 图片路径正确 图片文件存在 线程本身运行 但是 图像似乎没有显示 可能出什么问题了 这是我的代码 package org main impo
  • 如何在 Java 9 中使用新的 BeanInfo 注解

    JEP 256 BeanInfo 注释 http openjdk java net jeps 256为JavaBean http download java net java jdk9 docs api java beans JavaBea
  • 如何将 Excel 中的图表导出为图形

    我有一系列 Excel 电子表格 每个电子表格至少包含一页数据和一页根据数据创建的图表 我需要捕获 不从数据中重新生成 将现有图表作为网络友好图像 这可以通过 Java 或 Net 实现吗 我知道 POI 的东西 Java 不会这样做 或者
  • 如何将 openapi-generator 中的客户端包含在 gradle java 应用程序中?

    我想创建一个 gradle java 应用程序 它从 openAPI 规范文件生成客户端并使用该客户端 所以我创建了一个java应用程序gradle init 类型 应用程序 语言 Java DSL groovy 测试框架 Junit Ju
  • 正则表达式或用单个空格替换多个空格的方法

    你能告诉我有没有办法在java或spring中用单个空格替换多个空格 有相同的 stringUtils 函数吗 like 1 test test test test 2 test test test test 3 test test tes
  • 字符串排序真的是 O(n^2logn) 吗? [复制]

    这个问题在这里已经有答案了 我读了以下内容 排序需要 O NlogN 那么它怎么是 O N 2logN 我们在这里想念的是 两个字符串的比较不是 O 1 在最坏的情况下 需要 在 所以最终的复杂度是O N 2logN 它是否正确 我一直认为
  • Java SWT 用户输入验证

    在 SWT 中进行用户输入验证时 Java 约定是什么 我读到有 FieldEditors 它们是非常方便的字段 但遗憾的是仅适用于首选项和对话框 我还了解到有一个 IValidator 接口 但它经常与数据绑定一起使用 就我而言 我的大多
  • Java ZIP - 如何解压缩文件夹?

    是否有任何示例代码 如何将 ZIP 中的文件夹部分解压到我想要的目录中 我已将文件夹 FOLDER 中的所有文件读取到字节数组中 如何从其文件结构创建 我不确定你所说的部分是什么意思 您的意思是在没有 API 帮助的情况下自己完成吗 如果您
  • 如何查找给定字符串中仅出现一次的第一个字符[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 测试 Hessian remoting-servlet.xml

    我们使用 Hessian 来实现富客户端和服务器之间的通信 由于移动和重命名 remoting servlet xml 中的条目有时会与实际的类名不匹配 因此 我正在寻找一种简单的方法来测试远程处理 xml 有没有简单的方法可以做到这一点
  • 如何自定义 JFrame 上的标题栏?

    我想在我的 Java Swing 桌面应用程序中拥有一个自定义的标题栏 最好的方法是什么 我可以通过在 JFrame 的构造函数中使用以下代码来使用 Swing 标题栏 this setUndecorated true this getRo
  • Android 改造参数化@Headers

    我正在使用 OAuth 每次发出请求时都需要将 OAuth 令牌放入标头中 我看到 Header注释 但是有没有办法让它参数化 以便我可以在运行时传入 这是概念 Header Authorization OAuth var api vers
  • 使用 https 的 Java Jersey RESTful Web 服务

    我是 Java EE 的新手 正在开发一个 RESTful API 其中每个 API 调用用户都会发送编码的凭据 我的问题是如何通过默认的 http 实现 https 协议并确保我的连接安全 我正在使用 Jersey Restful Web
  • 如何知道一个点是否在复杂的 3D 形状内(.ply 文件)

    我正在研究一个Java女巫项目真是要了我的命 经过几天在不同论坛上的研究 寻找我真正需要的东西 我来寻求你的帮助 我的数据 ply 文件 包含由许多三角形组成的 3D 形状 一个点 3D坐标 我想知道这个点是否包含在复杂的 3D 形状内 我
  • android中ScrollView中的图像

    在我的应用程序中 我想放置一个 png 文件 并且希望它在横向和纵向模式下都被视为滚动图像 请建议代码或示例 要使您的 Imageview 在高度不适合时滚动 您可以在 xml 中的 ScrollView 内添加一个 ImageView 并
  • 为什么我们在同一台服务器上使用多个应用程序服务器实例

    我想这是有充分理由的 但我不明白为什么有时我们会在同一物理服务器上放置例如 5 个具有相同 Web 应用程序的实例 这与多处理器架构的优化有关吗 JVM 或其他允许的最大内存限制 嗯 过了很长一段时间我又看到这个问题了 一台机器上的多个 J
  • Java并发锁和条件的使用

    我可以用object wait object notify and synchronized blocks解决生产者消费者类型的问题 同时我可以使用locks and conditions from java util concurrent
  • SWIG C 函数指针和 JAVA

    我有一些 C 代码 其中一个方法有一个函数指针作为参数 我正在尝试在我的 Android 应用程序中使用 C 代码 我决定使用 SWIG 来完成生成我需要的 java 文件的所有工作 一切都适用于常规函数 没有函数指针作为参数的函数 但我不
  • POJO 支持使用omnifaces 自动完成primefaces

    我正在尝试在我的项目中使用 primefaces 自动完成组件 以避免将特定转换器写入我尝试使用的每个列表对象全能面孔 http showcase omnifaces org converters ListConverter如建议的here
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d

随机推荐

  • Receive-Job 返回意外的变量类型

    我正在尝试执行Invoke Sqlcmd命令 来自SQLServer模块 https learn microsoft com en us sql powershell sql server powershell view sql serve
  • 输入和按钮与 Bootstrap 在同一行

    我想将输入字段和按钮放在同一行中 我想为按钮设置固定大小 并且希望表单填充可用空间 我尝试创建自己的解决方案 但不幸的是该按钮低于输入字段 我怎样才能解决这个问题 CSS input bar display table width 100
  • 对象方法内的自引用

    刚刚开始在 Matlab OO 编程中进行速成课程 我想为一个对象编写一个 set 方法 该方法将设置值 然后通过在另一个对象的相关字段中设置自身来进行交互 classdef Person properties age sex priori
  • 拖放,防止尴尬的突出显示?

    我正在使用查询构建拖放方法 onmousedown 导致 onmousemove 拖动 然后 onmouseup 解除绑定 onmousemove 问题是 浏览器默认开始突出显示 onmousemove 它会在整个页面上飞来飞去并取消该事件
  • 具有数据属性的 HTML Option 元素。是否可能,如果可以,如何使用 jQuery 检索值?

    我只是想知道是否可以在 html 中包含带有数据属性的选项元素 如果可以的话如何检索该值 更具体 假设我有以下代码
  • 如何在 YAML 中使用 IF ELSE 和变量?

    我正在使用 Ansible Tower 的 YAML 文件 其中包含以下信息 name Package Deployment block name Update package package yum update cache True u
  • 当 DEBUG 为 False 时,Django 对 CSS 和图像等所有静态文件给出错误 500

    我尝试过用户已经发布的不同解决方案 但它们对我不起作用 设置 py项目数量 BASE DIR os path dirname os path dirname os path abspath file DEBUG False ALLOWED
  • 允许用户使用下拉菜单更改 CSS 设计元素?

    因此 由于我在为网站确定绝对主题时遇到问题 我想让用户从下拉菜单中选择一个主题 并且当单击某个选项时 它将更改背景图像 背景颜色和背景定位 例如 如果用户选择 Mario Bros 3 主题 他们会得到 background image u
  • Java 中的捕获转换是什么?有人能给我举个例子吗?

    我注意到 JLS 谈到5 1 10 捕捉转换 http java sun com docs books jls third edition html conversions html 5 1 10 但我不明白它们是什么 谁能给我解释一下 举
  • Mysql 或/和优先级?

    我想知道或 和如何工作 例如 如果我想获取 display 1 的所有行 我只能做WHERE tablename display 1 如果我想要显示 1 或 2 的所有行 我只能做WHERE tablename display 1 or t
  • HttpURLConnection 错误:java.net.SocketTimeoutException:连接超时

    我正在使用像这样的简单 urlconnection url URL getClient uid cl id URL url new URL this url Log d Set get t URL url HttpURLConnection
  • Fable F# > js 编译多个.fsx 文件

    如何编译多个 fsx使用寓言的文件 我 天真地 尝试在 fable config 文件中传递它们的数组 如下所示 outDir app projFile app index fsx app testmod fsx sourceMaps tr
  • 无法建立连接 - 源不存在

    我有一个简单的部分 用户可以根据需要从一个元素连接到另一个元素 连接后可以这样 我使用 jsPlumb 进行连接 连接后 如果用户满意可以保存 一切都按照我的要求正确保存 现在当用户重新加载页面连接时 例如 con 6 con 18 不会显
  • 如何改变平滑滚动的速度? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我无法更改平滑滚动的速度 我已经尝试更改以下代码末尾的值 1000 您能帮我吗 document ready funct
  • 从 Airflow Postgres 挂钩检索完整连接 URI

    有没有更简洁的方法从 Postgres 挂钩获取完整的 URI get uri 不包含 额外 参数 所以我像这样附加它们 def pg conn id to uri postgres conn id hook PostgresHook po
  • Flink Logging 获取作业名称或作业 ID

    我正在尝试设置 logback xml 以便它将包含与日志记录关联的 JobName 或 JobId 我还没有找到一种方法来做到这一点 是否可以 最终我想要实现的是能够将日志发送到 ElasticSearch 并用消息标记 JobName
  • 在开发模式下生成 JasperReport 时出错

    我在启动时初始化程序中的报告时遇到问题 前段时间 它工作正常 但是当我将 JDK 1 7 update 17 卸载到 JDK 1 7 update 21 并全新安装 Netbeans 时 存在异常 这是错误消息 Exception in t
  • iOS 应用程序可以在运行时读取自己的权利吗?

    iOS 应用程序可以在运行时发现 检查或以其他方式读取自己的权利吗 理想情况下 我可以将 entitlements 文件的全部 已处理 内容作为 plist 读取 仅获取应用程序标识符前缀将是可接受的次优方案 这里的目标包括 允许使用各种应
  • 创建没有 UI 的 iOS 操作扩展

    我正在尝试创建一个类似于 iOS 中可用的系统 复制 操作的操作扩展 我发现不同的答案说不可能有非全屏用户界面 但根据苹果官方文档 https developer apple com library archive documentatio
  • 树中始终向左|向右的下降路径的最大长度

    我正在准备技术面试 所以基本上从一开始就学习算法 我们得到了 BST 我需要找到其中 desc 路径的最大长度 该路径总是向左或向右 换句话说 示例树的下降路径是2 即15 10 6 5 2 15 10 6 14 我对算法问题非常陌生 解决