ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 从头开始​​实现树

2019-07-24 09:04:06  阅读:223  来源: 互联网

标签:java c-2 pointers binary-tree tree


我试图通过从头开始实现一个来学习树.
在这种情况下,我想用C#Java或C来做. (不使用内置方法)

因此每个节点将存储一个字符,每个节点最多有26个节点.

我将使用什么数据结构来包含指向每个节点的指针?

基本上我正在尝试从头开始实现基数树.

谢谢,

解决方法:

你描述的不是一个基数树……在基数树中,你可以在一个节点中有多个字符,并且子节点的数量没有上限.

您所描述的内容听起来更受限于字母…每个节点可以是a-z,后面可以跟另一个字母,a-z等.这种区别对于您选择保存下一个节点指针的数据结构至关重要.

在您描述的树中,最简单的结构可能是一个简单的指针数组……您需要做的就是将字符(例如’A’)转换为其ascii值(’65’),然后减去起始值offset(65)确定你想要的“下一个节点”.占用更多空间,但插入和遍历非常快.

在真正的基数树中,您可以有3个,4个,78个或0个子节点,并且“下一个节点”列表将具有排序,插入和删除的开销.慢得多.

我不能说Java,但如果我在C#中实现自定义基数树,我会使用其中一个内置的.NET集合.编写自己的排序列表并不能真正帮助您学习树概念,并且.NET集合的内置优化很难实现.然后,您的代码很简单:查找下一个节点;如果存在,抓住它去;如果没有,请将其添加到下一个节点集合中.

您使用哪个集合取决于您通过树实现的具体内容……每种类型的树都需要在插入时间,查找时间等之间进行权衡.您所做的选择取决于对应用程序最重要的是什么,而不是树.

合理?

标签:java,c-2,pointers,binary-tree,tree
来源: https://codeday.me/bug/20190724/1520586.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有