public void insert(BinaryNode node) { BinaryNode temp = this; while (temp != null) { if (temp.data <= node.data) { if (temp.right == null) { temp.right = node; break; } else temp = temp.right; } else { temp.leftNodeCount += 1; if (temp.left == null) { temp.left = node; break; } else temp = temp.left; } } }
private void PrintKthInorderNode(BinaryNode node, int k) { if (node.leftNodeCount + 1 == k) System.Console.WriteLine("\n\nKth inorder node is: " + node.data); else if (node.leftNodeCount + 1 > k) PrintKthInorderNode(node.left, k); else PrintKthInorderNode(node.right, k - (node.leftNodeCount + 1)); }
private void InorderTraversal(BinaryNode node) { if(node != null) { InorderTraversal(node.left); System.Console.Write(node.data + " "); InorderTraversal(node.right); } }
static void Main(string[] args) { BinaryNode root = new BinaryNode(7); root.insert(new BinaryNode(5)); root.insert(new BinaryNode(6)); root.insert(new BinaryNode(4)); root.insert(new BinaryNode(10)); root.insert(new BinaryNode(9)); root.insert(new BinaryNode(12)); System.Console.Write("Inoder traversal: "); root.InorderTraversal(); // Print kth node of in-order traversal. root.PrintKthInorderNode(3); System.Console.Read(); }