在第一个子节点兄弟结构中按唯一值查找节点

时间:2014-09-16 19:22:22

标签: c# treenode

我尽力在第一个子节点兄弟结构中找到特定节点,但我无法做任何可以帮助或给我方法找到节点方法的人。

我可以写add方法,但我不能写方法。

我的代码:

public int Weight { get; private set; }
public string Data { get; private set; }
public int NodeIndex { get; private set; }
public TreeNode FirstChild { get; private set; }
public TreeNode NextSibling { get; private set; }
public TreeNode ParentNode { get; private set; }

TreeNode Root, Head;

public TreeNode()
{
}

public TreeNode(int Weight, TreeNode firstChild, TreeNode nextSibling, string Data, int NodeIndex)
{
            this.Durability = Durability;
            this.Weight = Weight;
            this.Data = Data;
            this.FirstChild = firstChild;
            this.NextSibling = nextSibling;
            this.NodeIndex = NodeIndex;
}

假设我在以下结构中创建了树,每个人都有唯一的NodeIndex 我怎样才能找到这个节点?

提前致谢。

这是我的结构:

Root
 |
 p1 ----- p2 ----- p4 ----- p6  
 |        |         |       |
 c1       p3       c4       p7
          |                 |
          c2 - c3           c5

1 个答案:

答案 0 :(得分:0)

这样的东西?

public TreeNode NodeByIndex(TreeNode root, int NodeIndex)
{
  if (root.NodeIndex == NodeIndex)
    return root;

  if (root.FirstChild != nil)
  {
    TreeNode c = NodeByIndex(root.FirstChild, NodeIndex);
    if (c != nil)
      return c;
  }

  if (root.NextSibling != nil)
  {
    TreeNode c = NodeByIndex(root.NextSibling, NodeIndex);
    if (c != nil)
      return c;
  }

  return null;
}