简单的递归算法,一时写不出来,求教老大们。

hzh_wen_x 2006-07-05 04:08:04
id Parentid name
1 0 aaaa
2 1 bbbb
3 1 cccc
4 2 dddd
5 2 dddd
6 4 dddd

这是一个树结构,我点击根结点1,怎么得到下面所有的子结点?把点击的根结点下所有子结点放到一个数组里。
...全文
233 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzh_wen_x 2006-07-05
  • 打赏
  • 举报
回复
mengge(踏岸寻柳) 怎么遍历TreeNode啊?
hzh_wen_x 2006-07-05
  • 打赏
  • 举报
回复
不是要填到树里面去,树已经填充好了,我要点击根结点,得到下面所有结点,变成一个数组。
踏岸寻柳 2006-07-05
  • 打赏
  • 举报
回复
遍历TreeNode 即可
hzh_wen_x 2006-07-05
  • 打赏
  • 举报
回复
我不是要做得树型啊,我是要得到ID数组。。。
seaonce 2006-07-05
  • 打赏
  • 举报
回复
//递归添加树的节点
public void AddTree(int ParentID, TreeNode pNode)
{
DataSet ds = (DataSet)this.ViewState["ds"];
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "preid = " + ParentID;
// dvTree.Sort = "orderid asc";

foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{ //添加根节点

Node.Value = "1";
Node.Text = Row["name"].ToString();
TreeView1.Nodes.Add(Node);

// Node.Expanded = true;
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
}

else
{ //添加当前节点的子节点

Node.Text = Row["name"].ToString();
pNode.ChildNodes.Add(Node);
// Node.Expanded = true;


AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归

}
}

}
liaodanz 2006-07-05
  • 打赏
  • 举报
回复
在做树型的是吧..

private void Page_Load(object sender, System.EventArgs e)
{ Conn=new SqlConnection(com.connstr);
//new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connstr"]);
if(!Page.IsPostBack)
{
CreateDataSet();
InitTree(tvMenu.Nodes,"0");
}
}

//建立数据集
private DataSet CreateDataSet()
{
cmdSelect="select * from T_Dpt";
myCmd=new SqlDataAdapter(cmdSelect,Conn);
ds=new DataSet();
myCmd.Fill(ds,"tree");
return ds;
}
//建树的基本思路是:从根节点开始递归调用显示子树
private void InitTree(TreeNodeCollection Nds,string ParentDpt)
{
DataView dv=new DataView();
TreeNode tmpNd;
string intId;
dv.Table=ds.Tables["tree"];
dv.RowFilter="ParentDpt='" + ParentDpt +"'" ;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.ID=drv["DptNo"].ToString();
//tmpNd.Text=drv["DptName"].ToString();
tmpNd.Text="<div onclick='test(this.innerText)'>"+drv["DptName"].ToString()+"</div>";//添加单击事件
tmpNd.Expanded=true;
tmpNd.ImageUrl="Images/"+"folder.gif";//drv["Icon"].ToString();
//tmpNd.NavigateUrl="../"+drv["Address"].ToString();

Nds.Add(tmpNd);
intId=drv["ParentDpt"].ToString();
InitTree(tmpNd.Nodes,tmpNd.ID);

}
}

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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