![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 64
skye_fly
这个作者很懒,什么都没留下…
展开
-
牛客网刷题:给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。
题目描述给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。解题思路考虑用递归求解:首先考虑终止条件,假设如下只有三个节点的树存在两种情况:1)根节点为给定的两个节点中的一个,则直接返回该节点2)给定的两个节点分别位于根节点左右两侧,也返回根节点进一步推广到多个节点的树如下:那么递归遍历每个节点,将每个节点作为根节点,同以上有两种情况:1)要么返回该根节点(给定两个节点位于该节点的左右子节点中);2)要么返回该节点的子节点中的某一个子节原创 2021-03-30 15:38:56 · 432 阅读 · 0 评论 -
Dijkstra算法学习梳理
最近学习《数据结构与算法分析》一书,在“图论算法”一章再次接触到了Dijkstra算法,之前没有深入理解,这里对其原理进行梳理。Dijkstra算法求解的是“单源最短路径问题”,是“贪婪算法”的一个很好的应用,按照我的理解就是“无权最短路径的类拓扑排序算法”+“调整策略”。而此处的调整策略就是“贪婪算法”的核心。下面简要介绍涉及的相关概念:1.贪婪算法:简单地说就是程序运行的每一个当前时间点,都会选择对当前最有利的情况,如果之前的决策导致的结果没有现在的好,那就重新调整为当前的决策。(前提是当前时刻做原创 2021-02-26 13:28:25 · 287 阅读 · 0 评论