Пример #1
0
        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);
            }

            
        }
Пример #2
0
        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;

            }


        }