树和图的一些算法
对于树
遍历方法:
1.递归遍历,而递归遍历又分为前序,中序,后续三种,这样概率清晰之后还是很容易理解的。其中层次遍历我们按照树结构,很容易给出树的遍历方法,但是用程序语言去描述这个过程,要充分应用这种结构。
public void traval(TreeNode node){ if(node == null) {return ;} // 先根 print(node);
// 树结构具有重复自身的特性 travel(node.left); travel(node.right); }
//
2、层次遍历:相较而言,层次遍历就不是那么好理解了,需要额外的数据结构,来存储访问节点。在程序中需要开辟一个线性表存储。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public void bfs(TreeNode node){ print(node.val); // 子树,第二层 print(node.left); print(node.right); List list; list.add(node.left); list.add(node.right); while (list.size()> 0 ){ List list2; for (Node node list){ print(node.left); print(node.next); if (node.left!= null ){ list2.add(node.left); } if (node.right != null ){ list2.add(node.right); } } list = list2; } } |
对于图
图比树复杂,可以从存储分类,也可以从是否有向,是否修改等维度分类。
1 2 3 | 拓扑图可以这样表示,只关注位置,不关注路径权重 0 -> 1 , 0 -> 2 , 1 -> 3 , 2 -> 3 graph = [[ 1 , 2 ],[ 3 ],[ 3 ],[]]<br> // 这样的图,如何进行图的深度遍历呢?<br><br> |
2.典型操作
在某种更加广泛的视野上,树也是图的一种特殊子类。在很多应用中,我们需要判断图中是否存在环。如果存在环,我们走迷宫很可能就走不出来了。类似的,如何判断链表中存在环,这个问题就简单多了。
日进有功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义