public static void Main()
var t1 = new TreeItem() {Value = 1};
var t2 = new TreeItem() {Value = 10};
var t5 = new TreeItem() {Value = 9};
var t3 = new TreeItem() {Value = 30};
t2.PrintPretty(string.Empty, true, false);
var t4 = new TreeItem() {Value = 7};
var t6 = new TreeItem() {Value = 20};
t2.PrintPretty(string.Empty, true, false);
private static void InsertNode(TreeItem tree, TreeItem item) {
if (item.Value >= currentNode.Value) {
if (currentNode.Right == null) {
currentNode.Right = item;
currentNode = currentNode.Right;
if (currentNode.Left == null) {
currentNode = currentNode.Left;
public int Value {get;set;}
public TreeItem Left {get;set;}
public TreeItem Right {get;set;}
public void PrintPretty(string indent, bool left, bool hasRight)
Console.WriteLine(Value);
Left?.PrintPretty(indent, true, Right != null);
Right?.PrintPretty(indent, false, false);