VB树遍历的问题(高手请进)(请教)

LanYuCSDN 2002-09-05 11:28:46
已知一个树,我想把它重新编码,并重新生成树
原树如下:
root

乒乓球
运动员1
运动员2
足球
运动员1
运动员2
运动员3
运动员4
篮球
运动员1
运动员2
运动员3
运动员4
垒球
饮料

可乐
把上面的树进行编码,并得到下面的树:
root
AA_01

AA_0101
AA_010101
AA_010102
AA_0102
AA_010201
AA_010202
AA_010203
AA_010204
AA_0103
AA_010301
AA_010302
AA_010303
AA_010304
AA_02
AA_0201
AA_0202
---------------------------------------------------

...全文
123 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
网络咖啡 2002-09-05
  • 打赏
  • 举报
回复
^^^^^^^^^^
ggto 2002-09-05
  • 打赏
  • 举报
回复
用菜單 哈哈哈哈“沒辦法 我就這麼菜"
Sean918 2002-09-05
  • 打赏
  • 举报
回复
递归。

思想比较简单,但是写算法的时候要仔细,不然很容易出错。

初使化根节点key
--添加子层节点 (节点.key = parent.key & 本层节点key值)
循环递归调用 添加子层节点

双重循环参数用2个: 本层节点数量 ,层数
bluecc 2002-09-05
  • 打赏
  • 举报
回复
看不懂,你要做什么呢
smilejiangjun 2002-09-05
  • 打赏
  • 举报
回复
treeview
rushing 2002-09-05
  • 打赏
  • 举报
回复
可以用treeview,也可以用二叉树的基本算法。
daviddivad 2002-09-05
  • 打赏
  • 举报
回复
看不懂,用控件TREEVIEW不就行了吗?改变显示的内容而已
LanYuCSDN 2002-09-05
  • 打赏
  • 举报
回复
考虑用递归,但是对同层的编码处理比较困难
LanYuCSDN 2002-09-05
  • 打赏
  • 举报
回复
谢谢大家,尤其是:
acptvb(微软全球技术中心 VB技术支持) ()

acptvb 2002-09-05
  • 打赏
  • 举报
回复
感谢您使用微软产品。

您可以如下例在Treeview中递归遍历所有节点并编码:

Private Sub Form_Load()

Dim nodX As Node
Set nodX = TreeView1.Nodes.Add(, , "R", "Root")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "Child 1")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C2", "Child 2")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C3", "Child 3")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C4", "Child 4")
Set nodX = TreeView1.Nodes.Add("C1", tvwChild, "C11", "Child 11")
Set nodX = TreeView1.Nodes.Add("C1", tvwChild, "C12", "Child 12")
Set nodX = TreeView1.Nodes.Add("C12", tvwChild, "C121", "Child 121")
Set nodX = TreeView1.Nodes.Add("C1", tvwChild, "C13", "Child 13")
Set nodX = TreeView1.Nodes.Add("C2", tvwChild, "C21", "Child 21")
Set nodX = TreeView1.Nodes.Add("C2", tvwChild, "C22", "Child 22")

nodX.EnsureVisible

TreeView1.BorderStyle = vbFixedSingle

End Sub

Private Sub traval(nodex As Node, fatherkey As String, index As Integer)

Dim count As Integer
Dim ChildNode As Node

count = nodex.Children

nodex.Key = fatherkey + "0" + Chr(48 + index)
nodex.Text = nodex.Key

Debug.Print nodex.Key '或者对节点进行其他操作

If count > 0 Then

Set ChildNode = nodex.Child

traval ChildNode, nodex.Key, 1

Dim i As Integer

For i = 2 To count
Set ChildNode = ChildNode.Next

traval ChildNode, nodex.Key, i

Next

End If

End Sub


Private Sub Command1_Click()

Dim count As Integer
Dim ChildNode As Node
Dim rootnode As Node

Set rootnode = TreeView1.Nodes(1)
count = rootnode.Children

rootnode.Key = "Root"
rootnode.Text = rootnode.Key

If count > 0 Then

Set ChildNode = rootnode.Child

traval ChildNode, "AA_", 1

Dim i As Integer

For i = 2 To count
Set ChildNode = ChildNode.Next

traval ChildNode, "AA_", i

Next

End If
End Sub

详细信息请参考:
TreeView Control
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cmctl198/html/vbobjtreeview.asp


- 微软全球技术中心 VB技术支持

本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。

LanYuCSDN 2002-09-05
  • 打赏
  • 举报
回复
to snoweagle(雪鹰)

我现在遇到的困难是在key值上体现出节点的层次关系
root
AA_01 --AA_01是root的孩子
AA_0101 --AA_0101是AA_01的孩子
AA_010101 --AA_010101它是AA_0101的孩子
AA_010102 --AA_010102也是AA_0101的孩子
需要在KEY中体现出层次关系.





snoweagle 2002-09-05
  • 打赏
  • 举报
回复
用TreeView很好吧,至于那些Key嘛就用ACCESS的自动编号来进行添加就行了。
构建一个物品表
{ ID 自动编号
物品名
直属父ID
}
只要在这个表中设一个根结点Root,球类、饮料的直属父ID就是Root的ID号
其他类推
这样从Root开始-->找到Root的直属子结点-->一级一级的找到其他各子结点。
这样这些关系就清楚了
用TreeView时,
先写Root
再在Root下写直属子结点
再在各直属子结点下写各分结点
反正Key是自动累加的,不会重复。
LanYuCSDN 2002-09-05
  • 打赏
  • 举报
回复
请大家注意一下 ,重新生成树的编码,
我现在遇到的困难就是在遍历树的过程中无法生成该编码.
LanYuCSDN 2002-09-05
  • 打赏
  • 举报
回复
to :: daviddivad(喜欢VB需要理由吗?需要吗?不需要
看来我说得不是很清楚
.应该是现在有一个treeview,并且已经有节点了,
我要按照这些节点再重新生成这个树,这个树的key在变成上面"问题"中的样子

to:wxy_xiaoyu(然也) 我也这样想过,但算法不好想,你注意一下节点的编码.

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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