如何构造树的问题

rick1126 2002-06-03 09:45:41
有这样一个树型结构的节目单:
频道->节目->节目项->任务, 请问我该如何构造树???

目前我给树节点提供5个指针, 父指针, 左兄弟指针, 右兄弟指针, 子树的首尾指针2个. 因为插入的时候我的数据是一个包含了前面4个层次的一个数据结构描述的单位就是任务, 这意味着我需要逐层查询需要插入的位置, 这样的设计好不好, 遍历我应该使用什么算法, 按照层次???

因为目前我的程序从网络接收节目单, 存储成为数据结构, 不过如果使用链表虽然简单, 但是要求我输出一个XML文档, 这样需要进行多重循环, 为此我想到树, 这样结构附加一个垃圾回收结构(负责回收删除的节点给以后使用, 因为节目单实时更新, 我不想产生太多因为频繁new和delete造成的内存碎片)
...全文
239 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ajoo 2002-06-07
  • 打赏
  • 举报
回复
I mean, not C++?
rick1126 2002-06-07
  • 打赏
  • 举报
回复
VC, 有什么问题???
rick1126 2002-06-05
  • 打赏
  • 举报
回复
目前我使用自己的方式实现
typedef struct tagPLNode{
...
tagPLNode *pParent, *pLeftChild, *pRightSibling;

}US_NODE, *PUS_NODE;
ajoo 2002-06-05
  • 打赏
  • 举报
回复
you use C?
ajoo 2002-06-05
  • 打赏
  • 举报
回复
interesting! How do you implement a garbage collector?
Use smart pointer?

from your description, it seems like
Channel
a list of Program
Program
a list of ProgramItem
ProgramItem
a list of Task
Is that right?

This should be represented by a tree.
interface Channel{virtual list<Program*> getPrograms()=0;}
interface Program{virtual list<ProgramItem*> getItems()=0:}
interface ProgramItem{virtual list<Task*> getTasks()=0;}

or better, don't expose list, define your own accessor and iterators.
you can store the list internally as a binary search tree so that the search can be limited to log(n) (this can be an enchancement rather than a requirement)

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧