如何在C#中实现treeview查找某一节点
来源:互联网 发布:基于密度的聚类算法ppt 编辑:程序博客网 时间:2024/04/27 12:19
在TreeView查找某一节点,通常有两种方法,一种是递归的,一种不是递归,但都是深度优先算法。其中,非递归方法效率高些,而递归算法要简洁一些。
第一种,递归算法,代码如下:
private TreeNode FindNode( TreeNode tnParent, string strValue )
{
if( tnParent == null ) return null;
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 ) return null;
if( tnParent.Text == strValue ) return tnParent;
else if( tnParent.Nodes.Count == 0 ) return null;
TreeNode tnCurrent, tnCurrentPar;
//Init node
tnCurrentPar = tnParent;
tnCurrent = tnCurrentPar.FirstNode;
while( tnCurrent != null && tnCurrent != tnParent )
{
while( tnCurrent != null )
{
if( tnCurrent.Text == strValue ) return tnCurrent;
else if( tnCurrent.Nodes.Count > 0 )
{
//Go into the deepest node in current sub-path
tnCurrentPar = tnCurrent;
tnCurrent = tnCurrent.FirstNode;
}
else if( 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;
}
return null;
}
程序调用,如下:
TreeNode tnRet = null;
foreach( TreeNode tn in yourTreeView.Nodes )
{
tnRet = FindNode( tn, yourValue );
if( tnRet != null ) break;
}
- 如何C#中实现在TreeView查找某一节点
- 如何C#中实现在TreeView查找某一节点
- C#中如何实现在TreeView模糊查找某一节点
- 如何在C#中实现treeview查找某一节点
- 如何C#中实现在TreeView查找某一节点
- 如何C#中实现在TreeView查找某一节点(两种方法)
- 如何C#中实现在TreeView查找某一节点(两种方法)
- 如何C#中实现在TreeView查找某一节点(两种方法)
- 在TreeView查找某一节点
- 【转】C#中 TreeView如何获取某一节点下的所有子节点
- C# TreeView 节点查找
- C# TreeView 节点查找
- C# treeview 查找节点
- 请问在delphi5.5中如何在TreeView控件中实现先根据串名查找节点,然后删除该节点
- ASP.NET 2005 C#如何在TreeView中设置节点之间的间距,节点上下间距?
- C#中遍历TreeView并查找和选定节点
- C#中遍历TreeView并查找和选定节点
- 如何在C#的TreeView控件中双击节点而不改变节点的展开/折叠状态
- ubuntu下mplayer的使用(1)-安装
- 如需在线实时观看一大小为600MB,时间为120min的一部电影,理论所需的最小带宽为多少?
- ubuntu下mplayer的使用(2)-设置
- 推荐书籍
- ubuntu下mplayer 使用(3)-使用手册(中文)
- 如何在C#中实现treeview查找某一节点
- 界面处理之曲线救国
- 北京买衣服
- 这段时间来的想法。。。
- 首语
- C++ Tricks 1.1 条件运算符(?:)
- 考试前九天
- 我的作业(二)
- Ms Sql Server 2000 个人绿色版 5.62