C# 如何在二叉搜索树中查找重复元素数

C# 如何在二叉搜索树中查找重复元素数,c#,data-structures,C#,Data Structures,此代码用于二进制搜索树中的重复元素以及元素重复多少次但工作不正常,请告诉我此代码有何问题,我不确定是否正确编码……以下是一种可能有助于解决此问题的方法: 1在你的BST中获得最大值只要向右,向右,…,直到你到达一片叶子 2遵循以下伪代码: public void duplicate() { int repeatation = 0; Node current = root; Node duplicate = root; w

此代码用于二进制搜索树中的重复元素以及元素重复多少次但工作不正常,请告诉我此代码有何问题,我不确定是否正确编码……

以下是一种可能有助于解决此问题的方法:

1在你的BST中获得最大值只要向右,向右,…,直到你到达一片叶子

2遵循以下伪代码:

  public void duplicate()
    {
        int repeatation = 0;
        Node current = root;
        Node duplicate = root;
        while (current == null)
        {
            if (duplicate == current || duplicate == current.right  ||  duplicate== current.left)
            {
                Console.WriteLine("node is repeated :" + duplicate);
                repeatation++;



            }

        }
        Console.WriteLine("number of repeatation is :"  + repeatation);

    }

如果你遍历树,你将得到重复的元素,因此你只需要检查一个值何时等于上一个值,以及这种情况发生的次数。

你只需遍历BST一次,将每个元素保存在一个散列图中,并附上一个计数器,显示你遇到该元素的次数

然后,遍历哈希映射并输出计数器大于1的每个元素


时间复杂度:不,不是。我所看到的是一个无限循环-你正在检查的对象在迭代之间不会改变。那么如何解决这个问题呢??正如我提到的,我试图排序,但不能是,我做了顺序遍历,得到了重复的元素
for i = 0 to MAX_VALUE do
  currentNode = root;
  while(TRUE)
      if (currentNode.Value == i)
           apprearanceCount++;
      if (i > currentNode.Value)
           currentNode = currentNode.RightNode;
      else 
           currentNode = currentNode.LeftNode;
      if currentNode == NULL then break; // Don't forget to save appearance count