public void AddElement(int key) { currNode = this.Tree; bool right = true; while (true) { if (currNode == null) { break; } if (currNode.Key == 0) { if (right) { currNode.Key = key; currNode.Right = new TreeNode(); currNode = currNode.Right; Length++; break; } else if (!right) { currNode.Key = key; currNode.Left = new TreeNode(); currNode = currNode.Left; Length++; break; } } else if (key > currNode.Key) { currNode = currNode.Right; right = true; } else if (key < currNode.Key) { currNode = currNode.Left; right = false; } else if (key == currNode.Key) { throw new Exception("Node exists"); } } }
public BinarySearchTree(int InitialKey) { Tree = new TreeNode(InitialKey); allNodes = new List<TreeNode>(); currNode = this.Tree; }
private List<TreeNode> EnumerateNodes(TreeNode currNode) { try { allNodes.Add(currNode); EnumerateNodes(currNode.Left); EnumerateNodes(currNode.Right); } catch (Exception) { return allNodes; } return allNodes; }
private void RecursiveFind(TreeNode currNode, int key,out TreeNode node) { if (currNode == null) { node = null; return; } if (currNode.Key == key) { node = currNode; return; } RecursiveFind(currNode.Left, key, out node); RecursiveFind(currNode.Right, key, out node); return; }
public TreeNode(int key) { this.Key = key; Right = new TreeNode(); Left = new TreeNode(); }