获取树中的下一个项目
拥有一棵树(数据库中的逻辑树),其项目采用以下形式
- 列出项目 A
- 列出项目 B
- 列出项目 C
- 列出项目 D
- 列出项目 E
- 列出项目 F
- 列出项目 G
等等(嵌套深度不限),我想从任意节点开始向下(或向上)获取下一个节点。
假设给定了 List Item D
,我想编写一个返回 List Item E
的函数 GetNextNode()
。
我的想法是做一些递归的事情,但也许有更聪明的方法来处理这个问题?
我的问题:
你会如何解决这个问题?
编辑1:
可以使用以下函数访问树:
GetParentNode()
GetChildrenNodes()
GetNextSiblingNode()
- 等所以
它类似于 Windows 窗体 TreeView
。
Having a tree (logical in DB) with items in the form
- List item A
- List item B
- List item C
- List item D
- List Item E
- List Item F
- List Item G
and so on (nesting depth not limited), I want to get the next node down (or up), starting from an arbitrary node.
Let's say, List Item D
is given I want to write a function GetNextNode()
that would return List Item E
.
My idea would be to do some recursion stuff, but maybe there is a more clever way to handle this?
My question:
How would you solve this?
EDIT 1:
The tree can be accessed with functions like:
GetParentNode()
GetChildrenNodes()
GetNextSiblingNode()
- etc.
So it's similar to e.g. e Windows Forms TreeView
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我不得不这样做好几次。据记忆:
I've had to do this several times. From memory:
您可以通过递归或...最糟糕的 xD
我认为只有 3 种基本情况:
这并不适用于每种情况。您也应该搜索父节点的下一个节点。感谢文森特·范卡尔伯格的评论;-)
You can handle this via recursion or... worst xD
I think there are only 3 basic cases:
This doesn't works for every scenario. You should search the parent's next node too. Thanks to Vincent Vancalbergh for the comment ;-)
由于我对“向下”部分得到了很好的答复,因此我将添加自己的“向上”部分。也许是为了给你一些帮助;上面的部分类似于:
为了获得最深的同级 (2.),我使用以下代码:(
是的,我确实知道这是 VBScript;实际上我需要用这种语言)
Since I got a great reply for the "down" part, I'll added my own "up" part. Maybe it is for some help of you; the up part is similar to:
To get the deepest sibling (2.), I use the following code:
(Yes, I do know that this is VBScript; I needed it in fact in this language)
也许试试这个:
Try this maybe: