高手请指点!

解决方案 »

  1.   


    foreach(treenode node in treeview.nodes)
    {
       loop(node);
    }private void Loop(treenode subNode)
    {
       foreach(treenode node in subNode.nodes)
       {
          loop(Node);
       }
    }
      

  2.   

    用递归,
    public void VisiteTree( TreeNodeCollection nodes )
    {
      foreach(TreeNode node in nodes)
      {
        //
        // do your operation here with node
        //
         VisiteTree( node.Nodes );
      }
    }调用
    VisiteTree( this.treeView1.Nodes )
      

  3.   

    public void BeginRoundTree(TreeView tree)
    {
    int TreeChildNum = tree.Nodes.Count;
    int i;
    for(i=0;i<TreeChildNum;i++)
    {
    //Response.Write(tree.Nodes[i].Text+"<br>");
    NodeAction(tree.Nodes[i]);
    RoundTree(tree.Nodes[i]);
    }
    } //便历树(二)
    public void RoundTree(TreeNode treenode)
    {
    int childnum = treenode.Nodes.Count;
    int i,j;
    for(i=0;i<childnum;i++)
    { if(treenode.Nodes[i].Nodes.Count>0)
    {
    NodeAction(treenode.Nodes[i]);
    RoundTree(treenode.Nodes[i]); }
    else
    {
    NodeAction(treenode.Nodes[i]);
    //Response.Write(treenode.Nodes[i].Text+"<br>");
    } }
    }
      

  4.   

    深度遍历:
    traverse( TreeNode tnRoot)
    {
    //这里写你想对每一个结点执行的操作
    foreach( TreeNode tnTmp in tnRoot.Nodes )
    {
    traverse( tnTmp );
    }
    }
    广度遍历:
    traverse( TreeNode tnRoot)
    {
    foreach( TreeNode tnTmp in tnRoot.Nodes )
    {
    //这里写你想对每一个结点执行的操作
    }
    foreach( TreeNode tnTmp in tnRoot.Nodes )
    {
    traverse( tnTmp );
    }
    }注意:广度遍历没有处理根结点自身,即传进去的那个根结点没有被遍历到,但它的子结点一个不漏。
      

  5.   

    sanall(Sanall Cobain) 
    写的不错啊。
    简洁。