// From http://stackoverflow.com/questions/5476183/the-program-not-print-output-anyone-can-help
// plus my corrections
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BinarySearchTree
{
public class Node
{
public int Data;
public Node Left;
public Node Right;
public void DisplayNode()
{
Console.Write(Data + " ");
}
}
public class BinarySearchTree
{
public Node root;
public BinarySearchTree()
{
root = null;
}
public void Insert(int i)
{
Node newNode = new Node();
newNode.Data = i;
if (root == null)
root = newNode;
else
{
Node current = root;
Node parent;
while (true)
{
parent = current;
if (i < current.Data)
{
current = current.Left;
if (current == null)
{
parent.Left = newNode;
break;
}
}
else
{
current = current.Right;
if (current == null)
{
parent.Right = newNode;
break;
}
}
}
}
}
public void InOrder(Node theRoot)
{
if (!(theRoot == null))
{
InOrder(theRoot.Left);
theRoot.DisplayNode();
InOrder(theRoot.Right);
}
}
static void Main()
{
BinarySearchTree nums = new BinarySearchTree();
nums.Insert(23);
nums.Insert(45);
nums.Insert(16);
nums.Insert(37);
nums.Insert(3);
nums.Insert(99);
nums.Insert(22);
Console.WriteLine("Inorder traversal: ");
nums.InOrder(nums.root);
}
}
}
Ly8gRnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU0NzYxODMvdGhlLXByb2dyYW0tbm90LXByaW50LW91dHB1dC1hbnlvbmUtY2FuLWhlbHAKLy8gcGx1cyBteSBjb3JyZWN0aW9ucwoKdXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0OwoKbmFtZXNwYWNlIEJpbmFyeVNlYXJjaFRyZWUKewogIHB1YmxpYyBjbGFzcyBOb2RlCiAgewogICAgcHVibGljIGludCBEYXRhOwogICAgcHVibGljIE5vZGUgTGVmdDsKICAgIHB1YmxpYyBOb2RlIFJpZ2h0OwoKICAgIHB1YmxpYyB2b2lkIERpc3BsYXlOb2RlKCkKICAgIHsKICAgICAgQ29uc29sZS5Xcml0ZShEYXRhICsgIiAiKTsKICAgIH0KICB9CgogIHB1YmxpYyBjbGFzcyBCaW5hcnlTZWFyY2hUcmVlCiAgewogICAgcHVibGljIE5vZGUgcm9vdDsKICAgIHB1YmxpYyBCaW5hcnlTZWFyY2hUcmVlKCkKICAgIHsKICAgICAgcm9vdCA9IG51bGw7CiAgICB9CiAgICBwdWJsaWMgdm9pZCBJbnNlcnQoaW50IGkpCiAgICB7CiAgICAgIE5vZGUgbmV3Tm9kZSA9IG5ldyBOb2RlKCk7CiAgICAgIG5ld05vZGUuRGF0YSA9IGk7CiAgICAgIGlmIChyb290ID09IG51bGwpCiAgICAgICAgcm9vdCA9IG5ld05vZGU7CiAgICAgIGVsc2UKICAgICAgewogICAgICAgIE5vZGUgY3VycmVudCA9IHJvb3Q7CiAgICAgICAgTm9kZSBwYXJlbnQ7CiAgICAgICAgd2hpbGUgKHRydWUpCiAgICAgICAgewogICAgICAgICAgcGFyZW50ID0gY3VycmVudDsKICAgICAgICAgIGlmIChpIDwgY3VycmVudC5EYXRhKQogICAgICAgICAgewogICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5MZWZ0OwogICAgICAgICAgICBpZiAoY3VycmVudCA9PSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgcGFyZW50LkxlZnQgPSBuZXdOb2RlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LlJpZ2h0OwogICAgICAgICAgICBpZiAoY3VycmVudCA9PSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgcGFyZW50LlJpZ2h0ID0gbmV3Tm9kZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHB1YmxpYyB2b2lkIEluT3JkZXIoTm9kZSB0aGVSb290KQogICAgewogICAgICBpZiAoISh0aGVSb290ID09IG51bGwpKQogICAgICB7CiAgICAgICAgSW5PcmRlcih0aGVSb290LkxlZnQpOwogICAgICAgIHRoZVJvb3QuRGlzcGxheU5vZGUoKTsKICAgICAgICBJbk9yZGVyKHRoZVJvb3QuUmlnaHQpOwogICAgICB9CiAgICB9CgogICAgc3RhdGljIHZvaWQgTWFpbigpCiAgICB7CiAgICAgIEJpbmFyeVNlYXJjaFRyZWUgbnVtcyA9IG5ldyBCaW5hcnlTZWFyY2hUcmVlKCk7CiAgICAgIG51bXMuSW5zZXJ0KDIzKTsKICAgICAgbnVtcy5JbnNlcnQoNDUpOwogICAgICBudW1zLkluc2VydCgxNik7CiAgICAgIG51bXMuSW5zZXJ0KDM3KTsKICAgICAgbnVtcy5JbnNlcnQoMyk7CiAgICAgIG51bXMuSW5zZXJ0KDk5KTsKICAgICAgbnVtcy5JbnNlcnQoMjIpOwogICAgICBDb25zb2xlLldyaXRlTGluZSgiSW5vcmRlciB0cmF2ZXJzYWw6ICIpOwogICAgICBudW1zLkluT3JkZXIobnVtcy5yb290KTsKICAgIH0KICB9Cn0K