示例#1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   Posts an order. </summary>
        ///
        /// <remarks>   Jakob, 15/09/2018. </remarks>
        ///
        /// <param name="Root"> The root. </param>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public void PostOrder(NetworkBinaryTreeNode Root)
        {
            if (Root == null)
            {
                return;
            }
            PreOrder(Root.left);
            PreOrder(Root.right);
            printStr += Root.NodeToString();
        }
示例#2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   Print tree. </summary>
        ///
        /// <remarks>   Jakob, 15/09/2018. </remarks>
        ///
        /// <param name="root"> The root. </param>
        ///
        /// <returns>   A string. </returns>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public static string PrintTree(NetworkBinaryTreeNode root)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(root.getMath.Answer.ToString());
            sb.Append("(");
            sb.Append(root.getMath.FirstNumber.ToString());
            sb.Append(root.getMath.Operator.ToString());
            sb.Append(root.getMath.SecondNumber.ToString());
            sb.Append(")");
            return(sb.ToString());
        }
示例#3
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   In order. </summary>
        ///
        /// <remarks>   Jakob, 15/09/2018. </remarks>
        ///
        /// <param name="Root"> The root. </param>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public void InOrder(NetworkBinaryTreeNode Root)
        {
            if (Root == null)
            {
                return;
            }
            else
            {
                InOrder(Root.left);
                if (!printStr.Contains(Root.NodeToString()))
                {
                    printStr += Root.NodeToString();
                }
                InOrder(Root.right);
            }
        }
示例#4
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   Adds answerVal2. </summary>
        ///
        /// <remarks>   Jakob, 15/09/2018. </remarks>
        ///
        /// <param name="answerVal2">   The answer Value 2 to add. </param>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public void Add(Values2 answerVal2)
        {
            if (top == null)
            {
                top = new NetworkBinaryTreeNode(answerVal2);
                return;
            }
            NetworkBinaryTreeNode currentNode = top;
            bool inserted = false;

            do
            {
                if (answerVal2.Answer < currentNode.getMath.Answer)
                {
                    if (currentNode.left == null)
                    {
                        currentNode.left = new NetworkBinaryTreeNode(answerVal2);
                        inserted         = true;
                    }
                    else
                    {
                        currentNode = currentNode.left;
                    }

                    if (answerVal2.Answer >= currentNode.getMath.Answer)
                    {
                        if (currentNode.right == null)
                        {
                            currentNode.right = new NetworkBinaryTreeNode(answerVal2);
                            inserted          = true;
                        }
                        else
                        {
                            currentNode = currentNode.right;
                        }
                    }
                }
            } while (!inserted);
        }
示例#5
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   Constructor. </summary>
        ///
        /// <remarks>   Jakob, 15/09/2018. </remarks>
        ///
        /// <param name="answerVal">    The answer value. </param>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public NetworkBinaryTree(Values2 answerVal)
        {
            top = new NetworkBinaryTreeNode(answerVal);
        }
示例#6
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   Constructor. </summary>
        ///
        /// <remarks>   Jakob, 15/09/2018. </remarks>
        ///
        /// <param name="val">  The value. </param>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public NetworkBinaryTreeNode(Values2 val)
        {
            getMath = val;
            left    = null;
            right   = null;
        }