递归算法实现建树原理
private void CreateTree(TreeNodeCollection treeNodeCollection, int parent)
{
DataSet dscontent = new DataSet();
oleDbDataAdapter1.SelectCommand.CommandText = "select * from content where pid = " + parent;
oleDbDataAdapter1.Fill(dscontent);
foreach (DataRow dr in dscontent.Tables["content"].Rows)
{
TreeNode tno = new TreeNode();
tno.Text = dr["NodeName"].ToString();
tno.Tag = Convert.ToInt32(dr["ID"]);
treeNodeCollection.Add(tno);
CreateTree(tno.Nodes, Convert.ToInt32(dr["ID"]));
}
}
void path(AdjMaxix adj, int i, int j, int k) //定义一个函数,形参是 adj,i,j,k;
{
int s; //定义变量s;
if (p[k]==j) // 设定循环条件;
{
for (s=0; s<=k; s++)
cout << p[s] << "; ";//依次输出平p[i];
cout << endl; // 输出p[i]后换行;
}
else //如果不符p[k]==j条件,则;
{
s=0;
while (s
{
if (adj.edges[p[k]][s]==1 && visited [s]==0)
{
visited[s]=1;
p[k+1]=s;
path(adj,i,j,k+1);
visited[s]=0;
}
s++;
}
}
}
void dispath(AdjMaxix adj, int i, int j)
{
int k;
p[0]=i;
for (k=0;k
visited[i]=0;
path(adj,i,j,0);
10-04-11
| 添加评论
| 打赏
◆◆
请登录后再发表评论!
◆◆