public void FindHighestRoute(int currentval, Node CurrentNode) { currentval += CurrentNode.Value; if (CurrentNode.LeftChild == null) { if(currentval > highestroute) highestroute = currentval; return; } else { FindHighestRoute(currentval, CurrentNode.LeftChild); FindHighestRoute(currentval, CurrentNode.RightChild); } }
public void AddNode(int NodeValue) { Node newNode = new Node { Value = NodeValue }; if (RootNode == null) { RootNode = newNode; RootNode.depth = 1; RootNode.rownum = 1; return; } Node SearchNode = RootNode; while(true) { if (SearchNode.LeftChild == null) { SearchNode.LeftChild = newNode; newNode.depth = SearchNode.depth + 1; newNode.rownum = SearchNode.rownum; newNode.RightParent = SearchNode; Console.WriteLine("Node added at depth " + newNode.depth + " and row " + newNode.rownum); if (newNode.rownum != 1) { newNode.LeftParent = SearchNode.LeftParent.LeftChild; SearchNode.LeftParent.LeftChild.RightChild = newNode; } break; } if (SearchNode.RightChild == null) { SearchNode.RightChild = newNode; newNode.depth = SearchNode.depth + 1; newNode.rownum = SearchNode.rownum + 1; newNode.LeftParent = SearchNode; Console.WriteLine("Node added at depth " + newNode.depth + " and row " + newNode.rownum); if (newNode.rownum != newNode.depth) { newNode.RightParent = SearchNode.RightParent.RightChild; SearchNode.RightParent.RightChild.LeftChild = newNode; } break; } // if we are at the far right, go to new row if (SearchNode.depth == SearchNode.rownum) { int tmp = SearchNode.depth; SearchNode = RootNode; for (int i = 1; i <= tmp; i++) SearchNode = SearchNode.LeftChild; } else SearchNode = SearchNode.RightParent.RightChild; } }