Ejemplo n.º 1
0
        static PeformanceTracker()
        {
            watchList    = new Dictionary <string, Stopwatch>();
            writeQueue   = new Utils.Queue <string>();
            writerThread = new Thread(Write);
            writerThread.IsBackground = true;

            trackingState = TrackingState.None;

#if OPTRACK
            trackingState = TrackingState.OpLevel;
#endif
#if CALLTRACK
            trackingState = TrackingState.CallLevel;
#endif
#if STACKTRACK
            trackingState = TrackingState.StackLevel;
#endif
#if LINETRACK
            trackingState = TrackingState.LineLevel;
#endif
#if ALLTRACK
            trackingState = TrackingState.All;
#endif
            if (trackingState != TrackingState.None)
            {
                writerThread.Start();
            }
        }
Ejemplo n.º 2
0
        //Invert a binary tree
        public TreeNode <int> InvertBinaryTree1(TreeNode <int> node) //Level Order Traversal
        {
            if (node == null)
            {
                return(null);
            }
            var queu = new Utils.Queue <TreeNode <int> >();

            queu.EnQueue(node);

            while (!queu.IsEmpty())
            {
                var temp = queu.DeQueue();
                var left = temp.left;
                temp.left  = temp.right;
                temp.right = left;
                if (temp.left != null)
                {
                    queu.EnQueue(temp.left);
                }
                if (temp.right != null)
                {
                    queu.EnQueue(temp.right);
                }
            }
            return(node);
        }
Ejemplo n.º 3
0
        public int MinimalDepth1(TreeNode <int> node) //Level Order Traversal
        {
            if (node == null)
            {
                return(0);
            }

            var que = new Utils.Queue <item>();

            que.EnQueue(new item(node, 1));

            while (!que.IsEmpty())
            {
                var temp = que.DeQueue();
                if (temp.node.left == null && temp.node.right == null)
                {
                    return(temp.depth);
                }

                if (temp.node.left != null)
                {
                    var newItem = new item(temp.node.left, temp.depth + 1);
                    que.EnQueue(newItem);
                }

                if (temp.node.right != null)
                {
                    var newItem = new item(temp.node.right, temp.depth + 1);
                    que.EnQueue(newItem);
                }
            }
            return(0);
        }
Ejemplo n.º 4
0
        public int MinimalDepthHelper(Node <int> node)
        {
            if (node == null)
            {
                return(0);
            }

            var que = new Utils.Queue <Node <int> >();

            que.EnQueue(node);

            while (!que.IsEmpty())
            {
                var temp = que.DeQueue();
                if (temp.children != null && temp.children.Length > 0)
                {
                    foreach (var item in temp.children)
                    {
                        return(this.MinimalDepthHelper(item) + 1);
                    }
                }
            }
            return(0);
        }