首页 -> rent -> 如何C#中实现在TreeView查找某一节点
此处的广告请在后台广告设置“其他2”中设置。建议放置adsense推介/foxfire推介等。(当填写后此文自动消失)

如何C#中实现在TreeView查找某一节点

  发布时间:2007-12-26 00:24:00 作者: ≮羊羔羔羊≯ 点击:35 类别: rent

TreeView查找某一节点,通常有两种方法,一种是递归的,一种不是递归,但都是深度优先算法。其中,非递归方法效率高些,而递归算法要简洁一些。

第一种,递归算法,代码如下:

private TreeNode FindNode( TreeNode tnParent, string strValue )

{

if( tnParent == null ) returnnull;

if( tnParent.Text == strValue ) return tnParent;

TreeNode tnRet = null;

foreach( TreeNode tn in tnParent.Nodes )

{

tnRet = FindNode( tn, strValue );

if( tnRet != null ) break;

}

return tnRet;

}

第二种,非递归算法,代码如下:

private TreeNode FindNode( TreeNode tnParent, string strValue )

{

if( tnParent == null ) returnnull;

if( tnParent.Text == strValue ) return tnParent;

elseif( tnParent.Nodes.Count == 0 ) returnnull;

TreeNode tnCurrent, tnCurrentPar;

//Init node

tnCurrentPar = tnParent;

tnCurrent = tnCurrentPar.FirstNode;

while( tnCurrent != null &&tnCurrent != tnParent )

{

while( tnCurrent != null )

{

if( tnCurrent.Text == strValue ) return tnCurrent;

elseif( tnCurrent.Nodes.Count >0 )

{

//Go into the deepest node in current sub-path

tnCurrentPar = tnCurrent;

tnCurrent = tnCurrent.FirstNode;

}

elseif( tnCurrent != tnCurrentPar.LastNode )

{

//Goto next sible node

tnCurrent = tnCurrent.NextNode;

}

else

break;

}

//Go back to parent node till its has next sible node

while( tnCurrent != tnParent &&tnCurrent == tnCurrentPar.LastNode )

{

tnCurrent = tnCurrentPar;

tnCurrentPar = tnCurrentPar.Parent;

}

//Goto next sible node

if( tnCurrent != tnParent )

tnCurrent = tnCurrent.NextNode;

}

returnnull;

}

程序调用,如下:

TreeNode tnRet = null;

foreach( TreeNode tn in yourTreeView.Nodes )

{

tnRet = FindNode( tn, yourValue );

if( tnRet != null ) break;

}

源自:http://blog.csdn.net/Knight94/archive/2006/03/29/642736.aspx


热门TAG
最新文章
ALL CONTENT ARE PROVIDED BY NICEWORDS AT nicewords.cc. THESE CONTENTS ARE GENERATED BY CRAWLERS THAT INDEXES THE WEBSITES. WE DO NOT EDIT NOR REVISE ANY CONTENT. TO REPORT AN INCORRECT CONTENT, PLEASE EMAIL US.     PowerBy NiceWords