簡體   English   中英

遞歸函數找不到節點並返回null

[英]recursive function could not find the node and returns null

我有以下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 我很困惑為什么要擁有它? 請問您的幫助嗎?

經過多次測試,我找到了正確的答案。 感謝您的意見,這對我有很大幫助。 因為當IF不為真時失敗,所以我也添加了其他部分,發現是正確的。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM