Example #1
0
        /// <summary>
        /// Tries to display a ring around the object at text position
        /// offset.
        /// </summary>
        /// <param name="offset">The text position.</param>
        public void MarkObjectAt(int offset)
        {
            OverlayShapeVM ols = DisplayTree.ObjectFromOffset(offset);

            if (ols != null)
            {
                View.MarkObject(ols);
            }
        }
Example #2
0
        private static void Main()
        {
            var f = new BinaryTree <char>('F');
            var b = new BinaryTree <char>('B');
            var g = new BinaryTree <char>('G');
            var a = new BinaryTree <char>('A');
            var d = new BinaryTree <char>('D');
            var i = new BinaryTree <char>('I');
            var c = new BinaryTree <char>('C');
            var e = new BinaryTree <char>('E');
            var h = new BinaryTree <char>('H');

            f.AddLeft(b);
            f.AddRight(g);
            b.AddLeft(a);
            b.AddRight(d);
            g.AddRight(i);
            i.AddLeft(h);
            d.AddLeft(c);
            d.AddRight(e);

            Console.WriteLine("PreOrder tree traversal: ");
            DisplayTree.PreOrderTraversal(f);

            Console.WriteLine();
            Console.WriteLine("InOrder tree traversal: ");
            DisplayTree.InOrderTraversal(f);

            Console.WriteLine();
            Console.WriteLine("OutOrder tree traversal: ");
            DisplayTree.OutOrderTraversal(f);

            Console.WriteLine();
            Console.WriteLine("PostOrder tree traversal: ");
            DisplayTree.PostOrderTraversal(f);

            Console.WriteLine();
            Console.WriteLine("LevelOrder tree traversal: ");
            DisplayTree.BreadthFirstTreeTraversal(f);
        }
Example #3
0
        private static void Main()
        {
            const string infix = "3+2*4/5";

            Console.WriteLine($"Initial infix: {infix}");
            // 324*5/+
            var postfix = ShuntingYardAlgorithm.PostfixString(infix);

            Console.WriteLine($"Postfix by Shunting-yard: {postfix}");
            var arithmeticTree = ExpressionTree.BuildArithmeticTree(postfix);

            Console.WriteLine("Infix by In-Order traversal: ");
            DisplayTree.InOrderTraversal(arithmeticTree);
            Console.WriteLine();
            Console.WriteLine("Postfix notation by Post-Order traversal: ");
            DisplayTree.PostOrderTraversal(arithmeticTree);
            Console.WriteLine();
            Console.WriteLine("Prefix notation by Pre-Order traversal: ");
            DisplayTree.PreOrderTraversal(arithmeticTree);
            Console.WriteLine();
            Console.WriteLine("Infix: ");
            ExpressionTree.PrintInfixExpression(arithmeticTree);
        }
Example #4
0
 private void DisplayTree_Loaded(object sender, RoutedEventArgs e)
 {
     DisplayTree.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
 }
Example #5
0
        public DisplayTree search(NodeTree tree, String targetString)
        {
            // memory to maintain unvisited children

            List <Node> queue = new List <Node>();

            // iterate over all nodes (breadth first search)

            queue.Add(tree.GetTreeA());

            int currentLevelCount = 1;

            int nextLevelCount = 0;

            int currentLevel = 1;

            Console.WriteLine("First Level: " + currentLevel);

            Node currentNode = null;

            // counter to begin iterating over newly added children to instantiate display nodes

            int displayIterBegin = 1;

            // counter to end iterating over newly added children to instantiate display nodes

            int displayIterEnd = 1;

            // test if display tree has been instantiated

            if (displayTree == null)
            {
                displayTree = new DisplayTree(width, height, nodeSize);
            }

            DisplayNode currentParentDisplayNode = new DisplayNode();

            // add the root display node

            displayTree.AddDisplayNode(queue.ElementAt(0), null, currentLevel, 1, nextLevelCount, currentParentDisplayNode);

            List <DisplayNode> childDisplayNodes = new List <DisplayNode>();

            List <DisplayNode> parentDisplayNodes = new List <DisplayNode>();

            parentDisplayNodes.Add(currentParentDisplayNode);

            List <Node> childNodes = new List <Node>();

            while (queue.Count > 0)
            {
                currentNode = queue.ElementAt(0);

                queue.RemoveAt(0);

                // get current parent display node

                currentParentDisplayNode = parentDisplayNodes.ElementAt(0);

                parentDisplayNodes.RemoveAt(0);

                Console.WriteLine("Current Node Str: " + currentNode.getNodeStr());

                Node currentNodeChild = null;

                while ((currentNodeChild = currentNode.getNextChild()) != null)
                {
                    queue.Add(currentNodeChild);

                    nextLevelCount++;

                    displayIterEnd++;

                    DisplayNode displayNode = new DisplayNode();

                    displayNode.SetParent(currentParentDisplayNode);

                    childDisplayNodes.Add(displayNode);

                    childNodes.Add(currentNodeChild);
                }

                currentLevelCount--;

                if (queue.Count > 0)
                {
                    if (currentLevelCount == 0)
                    {
                        parentDisplayNodes.Clear();

                        currentLevel++;

                        for (int levelCounter = 0; levelCounter < childDisplayNodes.Count; levelCounter++)
                        {
                            // add the display node

                            displayTree.AddDisplayNode(childNodes.ElementAt(levelCounter), childDisplayNodes.ElementAt(levelCounter).GetParent(), currentLevel, nextLevelCount, levelCounter, childDisplayNodes.ElementAt(levelCounter));

                            parentDisplayNodes.Add(childDisplayNodes.ElementAt(levelCounter));
                        }

                        Console.WriteLine("Level has incremented! " + currentLevel);

                        currentLevelCount = nextLevelCount;

                        nextLevelCount = 0;

                        childDisplayNodes.Clear();

                        childNodes.Clear();
                    }
                }
            }

            Console.WriteLine("Final Current Level: " + currentLevel);

            displayTree.CalculateDisplayTreeYValues(currentLevel);

            return(displayTree);
        }