Реализация бинарного дерева поиска - C#
Формулировка задачи:
Есть код, Помогите найти ошибку.
using System;
namespace BinarySearchTree
{
public class Node
{
public int value;
public Node left;
public Node right;
public void ShowNode()
{
Console.Write(value + " ");
}
}
public class BST
{
public Node root;
public BST()
{
root = null;
}
public void Insert(int i)
{
Node newNode = new Node();
newNode.value = i;
if (root == null)
root = newNode;
else
{
Node current = root;
Node parent;
while (true)
{
parent = current;
if (i < current.value)
{
current = current.left;
if (current == null)
{
parent.left = newNode;
break;
}
else
{
current = current.right;
if (current == null)
{
parent.right = newNode;
break;
}
}
}
}
}
}
public void Walk (Node theRoot)
{
if (!(theRoot == null))
{
Walk (theRoot.left);
theRoot.ShowNode();
Walk (theRoot.right);
}
}
}
class Program
{
static void Main(string[] args)
{
BST data = new BST();
string[] str = Console.ReadLine().Split(' ');
foreach (string s in str)
data.Insert(int.Parse(s));
Console.WriteLine("Обход дерева: ");
data.Walk(data.root);
}
}
}
В общем ошибка кроется где-то в методе Insert. Метод работает только для первого вставляемого узла (не считая корневого.
Решение задачи: «Реализация бинарного дерева поиска»
textual
Листинг программы
if (i < current.value)
{