现在我的循环是
for (TreeNode n = e.Node.FirstNode; n != null; n = n.NextNode)
和我的数据类似
a
a1
a2
b
b1
我想只限制广度(a,b等,而不是a1,a2等)。我该怎么做?
答案 0 :(得分:4)
广度优先通常通过使用某种队列作为辅助数据结构来完成。
首先将根推入队列。 然后,队列中有一些东西:
答案 1 :(得分:0)
尝试
foreach (TreeNode n in e.Node.Parent.Nodes)
您可能需要检查空父级并使用
TreeNodeCollection nodes;
if(e.Node.Parent != null)
{
nodes = e.Node.Parent.Nodes;
}
else
{
nodes = e.Node.TreeView.Nodes;
}
这应该涵盖广度优先算法(抱歉,我没有测试过)
Queue<TreeNode> currentLevel = new Queue<TreeNode>( nodes );
Queue<TreeNode> nextLevel = new Queue<TreeNode>();
while( currentLevel.Count > 0 )
{
while( currentLevel.Count > 0 )
{
TreeNode n = currentLevel.Dequeue();
// Add child items to next level
foreach( TreeNode child in n.Nodes )
{
nextLevel.Enqueue( child );
}
}
// Switch to next level
currentLevel = nextLevel;
nextLevel = new Queue<TreeNode>();
}
答案 2 :(得分:0)
修改bstoney提供的代码 1.将根节点推送到currentLevel队列 2. mark nextLevel = new Queue();
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String deviceId;
if (telephonyManager.getDeviceId() != null)
deviceId = telephonyManager.getDeviceId(); //*** use for mobiles
else {
deviceId = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
}
return deviceId;