树的遍历,我想计算由一节点开始到下面6层合格的数据,节点下不合格的由他下节点及格顶上,怎么遍历统计。。在线等待。谢谢大家!比如说A合格,A是第一层,A的下节点是B、D,B不及格,D及格,B下节点是C。但是B不合格,所以C和D才是第二层,我就是想统计合格的A和D、C还有D、C下面合格的总共6层数据。。  
请好心人能帮忙一下。

解决方案 »

  1.   

    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);           
       }
    }
      

  2.   

    ///开始方法
    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);
        }    
      }
    }没测试过,希望能给楼主带来点思路
      

  3.   

    不用TreeView1控件啊。不是显示出来啊。我是要统计合格6层数据之和啊。我可以遍历及格,但是我不知道是第几层了