编程语言
首页 > 编程语言> > c# – 从头开始​​实现树

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

作者:互联网

我试图通过从头开始实现一个来学习树.
在这种情况下,我想用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