关于无限级树的生成问题??请求帮助!谢之~~~

xyz1202 2004-03-23 09:08:36
树的节点内容都是管理员添加上去的,
但是没有分配关系。

现在就是要去生成这样的一棵无限级的树,可是不知道怎么去建这样的树,平常的方法都是最好第一层的节点的内容,然后去管理节点下一层的,下一层还有下一层的节点内容。现在不是这样,方式就像玩拼图,拼图的小板块都有了,要看怎么去拼这棵树??

不知道说清楚了没有?请能帮忙的多多指教!谢先!

提供思路也可以!
...全文
41 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyz1202 2004-03-25
  • 打赏
  • 举报
回复
还别说,我就是搜了好多贴子,也看了好多贴子。总觉得似乎缺少什么,呵呵!
阿信的树,我去他的网站一直都不知道怎么down不了。狼兄台的树确实也不错,
可能是因为没有时间去深入理解的缘故吧。
alan815 2004-03-25
  • 打赏
  • 举报
回复
也可以去看看狼兄的树,和传统方法有很大不同哦,存储上冗余一些信息,然后避免了递归。在CSDN里搜树,能搜到N多,去年几位斑竹还关于树讨论了一番。你应该还能搜到那个帖子的。呵呵
possible_Y 2004-03-25
  • 打赏
  • 举报
回复
比较常用的方法:

数据库中有id 和 parent_id字段
然后递归遍历

建议在每一次更改树后,递归遍历一次数据库然后生成一个静态的页面,浏览时浏览生成好的静态页面
必尽递归遍历效率不高
xyz1202 2004-03-25
  • 打赏
  • 举报
回复
唉!
xyz1202 2004-03-24
  • 打赏
  • 举报
回复
发短信?哈哈,别人还以为是骚扰短信呢,我才不干咧~~~

其实我要的不是怎么去实现一棵树或者是弄出一个象csdn的左边的那种东西

我觉得最主要的是数据库设计,或者说是数据结构吧。程序开发总是要跟着数据库设计走的,怎么才能才能生成一个好的树,关键是数据库设计或者说是这种设计的思路。

是吧?

虽然现在有(如何建树的)思路了,但是不知道数据库设计和开发上会不会碰到问题。

大家可以提提意见。
zorou_fatal 2004-03-23
  • 打赏
  • 举报
回复
发短信问问阿信.
贤小二AI 2004-03-23
  • 打赏
  • 举报
回复

ASP无限级分类实现源码
http://www.wrclub.net/study/listarticle.aspx?id=1989

<%
'程序的核心是一个数组,显示的结果只是比较常见的两种情况,只读取了一次数据库
Dim LID,CID,TID,OID,Tmp,Url,Bof,Eof,i,ReadSQL,PgNum,PgSiz,Arr,reID,AllRs,LinkStr,ReadPgSiz,ReadPgNum,ReadAllFd,ReadAllPg,ReadAllRs,ReadRsNum
Db = "test.mdb"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
Set NET = New Class_NET


Class Class_NET
function Read(ReadSQL,PgNum,PgSiz)
ReadSQL =(Replace(ReadSQL,"'",""))
ReadPgSiz=Int(PgSiz)
ReadPgNum=Int(PgNum)
Set ReadRs= Server.CreateObject("ADODB.Recordset")
ReadRs.open ReadSQL,conn,1,1
ReadRs.PageSize =ReadPgSiz
ReadAllFd =ReadRs.Fields.Count
ReadAllPg =ReadRs.PageCount
ReadAllRs =ReadRs.RecordCount
ReadRsNum =ReadRs.Absoluteposition
If int(ReadPgNum)>Int(ReadAllPg) or int(ReadPgNum)=0 Then ReadPgNum=1
ReadRs.absolutepage=ReadPgNum
'返回实际的页面记录条数
If int(ReadPgNum)=Int(ReadAllPg) Then ReadPgSiz=ReadAllRs-ReadPgSiz*(ReadAllPg-1)
'数组开始
reDim ReadRsArr(ReadAllFd-1,ReadPgSiz-1)
For ReadArrRs = 0 to ReadPgSiz-1
If ReadRs.Eof Then Exit For
For ReadArrFd = 0 to ReadAllFd-1
ReadRsArr(ReadArrFd,ReadArrRs)=ReadRs(ReadArrFd)
Next
ReadRs.MoveNext
Next
Read=ReadRsArr
End function
'=====================================================
function ClassPath(Arr,reID,AllRs,Url,LinkStr)
Tmp=Null
reID=Int(reID)
If reID=0 Then Exit function
For i=0 to AllRs-1
If int(Arr(5,i))=int(reID) Then
OID=Arr(0,i)
LID=Arr(1,i)
Exit For
End If
Next
For i=i to 0 step -1
If Arr(1,i)<=LID Then
Tmp=LinkStr&"<a href="&Url&Arr(5,i)&">"&Arr(6,i)&"</a>"&Tmp
LID=LID-1
End If
Next
ClassPath=Tmp
End function
'=====================================================
Sub SetBofEof(Arr,reID,AllRs)
If reID=0 Then
Bof=0
Eof=AllRs-1
Else
For i=0 to AllRs-1
If Arr(5,i)=reID Then
Bof=i
For j=i+1 to AllRs-1
If Arr(1,j)<=Arr(1,i) Then
Eof=j-1
Exit For
End If
If j=AllRs-1 Then Eof=AllRs-1
Next
Exit For
End If
Next
End If
End Sub
'=====================================================
function ClassList(Arr,reID,AllRs,Url)
Tmp=Null
reID=Int(reID)
Call Net.SetBofEof(Arr,reID,AllRs)
'下边这两条实现不显示总分类的功能
If reID>0 Then Bof=Bof+1
For i=Bof to Eof
For j=1 to Arr(1,i)-Arr(1,Bof)
Tmp=Tmp&" "
Next
For k=i+1 to AllRs-1
If Int(Arr(2,k))=Int(Arr(2,i)) Then
Tmp=Tmp&"┝"
Exit For
Else
If k=AllRs-1 Then
Tmp=Tmp&"┕"
Exit For
End If
End If
Next
If i=AllRs-1 Then Tmp=Tmp&"┕"
Tmp=Tmp&"<a href="&Url&Arr(5,i)&">"&Arr(6,i)&"</a><br>"
Next
ClassList=Tmp
End function
End Class
Dim reClass
reClass=request("Class")
If reClass="" or Int(reClass)<1 Then reClass=0
Dim ClassArr
ClassArr=NET.Read(" Select * From Class Where LID<20 Order by OID",1,999)
Dim ClassAllRs
ClassAllRs=ReadAllRs
%>
<style type="text/css">
<!--
body,a,table,div,span,td,th,input,select{font-size:9pt;font-family:"dotuml";color:#000000;}
body {background-color:#ffffff;scrollbar-base-color:#d0d0c8}
a:hover{ color:#000000 ;}
a:link,a:active,a:visited{text-decoration:none ;color:#ff4500}
.btn {background-color: #d0d0c8; height: 21px; top: 1px; width: 21px; }
-->
</style>
<%
Response.Write "当前栏目的显示"
Response.Write "<br>"
Response.Write NET.ClassPath(ClassArr,reClass,ClassAllRs,"?Class=",">>>")
Response.Write "<br>"
Response.Write "栏目列表的显示"
Response.Write "<br>"
Response.Write NET.ClassList(ClassArr,reClass,ClassAllRs,"?class=")
%>

前几天看到的,和你共享吧(^_^)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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