Реализация бинарного дерева поиска - 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) {
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д