当前位置: 首页 > news >正文

左神算法基础提升--4

文章目录

  • 树形dp问题
  • Morris遍历


树形dp问题

在这里插入图片描述
求解这个问题需要用到我们在基础班上学到的从节点的左子树和右子树上拿信息的方法。
求最大距离主要分为两种情况:1.当前节点参与最大距离的求解;2.当前节点不参与最大距离的求解;
1.当前节点参与最大距离的求解的话,最大距离为左子树的高度加上右子树的高度加一;
2.当前节点不参与最大距离的求解的话,最大距离为左子树的最大距离与右子树的最大距离的最大值;
取这两种情况的最大值即为以当前节点为根节点的树的最大距离
在这里插入图片描述
核心代码
在这里插入图片描述


在这里插入图片描述
我们可以根据题意列出:
当某位员工参与时,派对的快乐值为其快乐值加上其直接下级员工不参与时的快乐值之和
当某位员工不参与时,派对的快乐值为其直接下级员工参与时的快乐值与其直接下级员工不参与时的快乐值的最大值之和。
在这里插入图片描述
代码:

在这里插入图片描述

Morris遍历

在这里插入图片描述
在这里插入图片描述
由上述规则可知:Morris遍历一共会来到某个节点两次,第一次到达某个节点时,其会找到其左子树的最右节点,将该节点的右指针指向当前节点,当其第二次来到节点时,其会将其左子树的最右节点指向空。由此我们便可以利用这一特点进行先序遍历和中序遍历。在这里插入图片描述
在这里插入图片描述
先序遍历
在这里插入图片描述
中序遍历:
在这里插入图片描述

由于Morris遍历无法第三次回到某个节点,后序遍历会比较复杂:当第二次来到自己的时候,逆序打印其左树的右边界。
在这里插入图片描述
在这里插入图片描述


http://www.lryc.cn/news/523075.html

相关文章:

  • 【docker踩坑记录】
  • CloudberryDB(四)并行执行
  • LARGE LANGUAGE MODELS ARE HUMAN-LEVEL PROMPT ENGINEERS
  • rabbitmq安装延迟队列
  • Kubernetes (K8s) 入门指南
  • Python 调用 Ollama 库:本地大语言模型使用详解
  • python matplotlib绘图,显示和保存没有标题栏和菜单栏的图像
  • 无人机(Unmanned Aerial Vehicle, UAV)路径规划介绍
  • python爬虫入门(实践)
  • 于灵动的变量变幻间:函数与计算逻辑的浪漫交织(下)
  • python实现pdf转word和excel
  • Pandas使用笔记
  • 高等数学学习笔记 ☞ 定积分与积分公式
  • wow-agent---task2使用llama-index创建Agent
  • RabbitMQ实现延迟消息发送——实战篇
  • Oracle 拉链式merge sort join 原理
  • QModbusTCPClient占用内存持续增长
  • 代码中使用 Iterable<T> 作为方法参数的解释
  • Oracle数据库传统审计怎么用
  • leetcode-买卖股票问题
  • MYSQL学习笔记(三):分组、排序、分页查询
  • 上位机工作感想-2024年工作总结和来年计划
  • 【视觉惯性SLAM:十六、 ORB-SLAM3 中的多地图系统】
  • 【C++笔记】红黑树封装map和set深度剖析
  • 4.若依 BaseController
  • vue项目配置多语言
  • 数据可视化大屏设计与实现
  • PDF文件提取开源工具调研总结
  • 多监控m3u8视频流,怎么获取每个监控的封面图(纯前端)
  • 【机器学习实战入门项目】使用深度学习创建您自己的表情符号