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(); } }
//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); }
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); }
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); }