树的遍历,我想计算由一节点开始到下面6层合格的数据,节点下不合格的由他下节点及格顶上,怎么遍历统计。。在线等待。谢谢大家

amylqt 2007-06-15 02:56:37
树的遍历,我想计算由一节点开始到下面6层合格的数据,节点下不合格的由他下节点及格顶上,怎么遍历统计。。在线等待。谢谢大家!比如说A合格,A是第一层,A的下节点是B、D,B不及格,D及格,B下节点是C。但是B不合格,所以C和D才是第二层,我就是想统计合格的A和D、C还有D、C下面合格的总共10层数据。。
请好心人能帮忙一下。
...全文
198 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
amylqt 2007-06-15
  • 打赏
  • 举报
回复
我想记录层数啊,如果层数大于6我就不遍历,怎么控制层数。。大家帮忙一下
amylqt 2007-06-15
  • 打赏
  • 举报
回复
不用TreeView1控件啊。不是显示出来啊。我是要统计合格6层数据之和啊。我可以遍历及格,但是我不知道是第几层了
jerryfos 2007-06-15
  • 打赏
  • 举报
回复
///开始方法
private void Start()
{
TreeView1.Nodes.Clear();//清空树
TreeNode tn=new TreeNode();
tn.Text="A";

TreeView1.Nodes.Add(tn);//在树上添加第一个节点A

GetSubNodes(tn,"A");//开始递归A的子节点
}

///递归方法
private string GetSubNodes(TreeNode tn ,string _FatherNode)
{
string sql="select * from table where FatherNode='"+_FatherNode+"'";
DataTable dt=...........//省略把父节点为_FatherNode的节点集合读出部分

foreach(DataRow dr in dt.Rows)
{
string Node=dr["Node"].ToString();
if(dr["是否及格"].ToString()=="是")//如果及格,就把该节点加到树的当前位置上
{
TreeNode temp=new TreeNode();
temp.Text=dr["Node"].ToString();
temp.Value=dr["NodeName"].ToString();

tn.Nodes.Add(temp);
GetSubNodes(temp);
}
else//如果不及格,不在树上添加,直接以当前树为出发点,继续找不及格节点下的子节点
{
GetSubNodes(tn);
}
}
}

没测试过,希望能给楼主带来点思路
amylqt 2007-06-15
  • 打赏
  • 举报
回复
是不是得用广度优先遍历啊。。大家能否帮忙一下。。不是用树性控件。我只是要统计数据,不是要显示出来。明白吗
Jinwmmail 2007-06-15
  • 打赏
  • 举报
回复
int[] iPass=new int[9];

private void Start()
{
CaluNode(this.treeView1.Nodes)

}

private void CaluNode(TreeNode[] tns )
{
foreach (TreeNode tn in (tns))
{
if (tn....合格)
iPass[tn.Level]++;
if (tn.Nodes.Count>0)
CaluNode(tn.Nodes);
}
}
amylqt 2007-06-15
  • 打赏
  • 举报
回复
树的遍历,我想计算由一节点开始到下面6层合格的数据,节点下不合格的由他下节点及格顶上,怎么遍历统计。。在线等待。谢谢大家!比如说A合格,A是第一层,A的下节点是B、D,B不及格,D及格,B下节点是C。但是B不合格,所以C和D才是第二层,我就是想统计合格的A和D、C还有D、C下面合格的总共6层数据。。
请好心人能帮忙一下。

111,097

社区成员

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

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

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