递归函数找不到节点并返回null

时间:2016-04-29 07:45:50

标签: c# .net visual-studio treeview

我有以下treeview

-node1 //ID=1
    -node1.1 //ID=1/1
    -node1.2
-node2
    -node2.1
        -node2.1.1 //ID = 2/1/1
    -node2.2
    -node2.3
-node3
    -node3.1
        -node3.1.1
        -node3.1.2 //ID = 3/1/2
    -node3.2
        -node3.2.1

我使用的"ID"正好是孩子的顺序,它已经在节点的Tag中。例如,我想查找节点-node3.1.2,我正在使用itemId = "3/1/2"节点,我通过Tag传递了该节点。

这是我的代码:

public TreeNode FromID(string itemId, TreeNode rootNode)
{
    foreach (TreeNode node in rootNode.Nodes)
    {
        if (node.Tag != null)
        {
            var value = node.Tag as NodeTag;
            string Node_ID = value.NodeID;
            if (Node_ID.Equals(itemId)) return node;
            TreeNode next = FromID(itemId, node);
            if (next != null) return next;
        }
    }
    return null;
}

当我运行代码时,它始终以null作为输出。我很困惑为什么我有它?我可以问你的帮助吗?

1 个答案:

答案 0 :(得分:0)

经过多次测试后,我找到了正确的答案。感谢您的评论,这对我帮助很大。因为它在IF不正确时失败了,所以我也添加了其他部分并发现它是正确的。

.....
else
{
    TreeNode nodeChild = FindTn(node.Nodes, NodeID);
    if (nodeChild != null) return nodeChild;
}