public bool dfs(Trees.TreeNode root, int start, int dest, List <char> soFar) { if (root == null) { return(false); } bool left = false, right = false; soFar.Add('L'); left = dfs(root.left, start, dest, soFar); soFar.RemoveAt(soFar.Count - 1); soFar.Add('R'); right = dfs(root.right, start, dest, soFar); soFar.RemoveAt(soFar.Count - 1); if (left && right) //root is lca { IsLcaFound = true; return(true); } else if (left && root.val == start) { pathToStart = new List <char>(soFar); IsLcaFound = true; return(true); } else if (left && root.val == dest) { pathToDest = new List <char>(soFar); IsLcaFound = true; return(true); } else if (right && root.val == start) { pathToStart = new List <char>(soFar); IsLcaFound = true; return(true); } else if (right && root.val == dest) { pathToDest = new List <char>(soFar); IsLcaFound = true; return(true); } else if (root.val == start) { pathToStart = new List <char>(soFar); return(true); } else if (root.val == dest) { pathToDest = new List <char>(soFar); return(true); } return(left || right || root.val == start || root.val == dest); }
public string GetDir() { string s; Trees.TreeNode root = new Trees.TreeNode(5); root.left = new Trees.TreeNode(1); root.right = new Trees.TreeNode(2); root.left.left = new Trees.TreeNode(3); root.right.left = new Trees.TreeNode(6); root.right.right = new Trees.TreeNode(4); return(GetDirections(root, 3, 6)); }
public string GetDirections(Trees.TreeNode root, int startValue, int destValue) { dfs(root, startValue, destValue, new List <char>()); if (IsLcaFound) { StringBuilder result = new StringBuilder(); int i = 0, j = 0; while (i < pathToStart.Count && j < pathToDest.Count) { if (pathToStart[i] != pathToDest[j]) { break; } i++; j++; } while (i < pathToStart.Count) { result.Append("U"); i++; } while (j < pathToDest.Count) { result.Append(pathToDest[j]); j++; } return(result.ToString()); } return(""); }
static void Main(string[] args) { int result = Arrays.MaxProfit(ConvertToArray("7,1,5,3,6,4")); Console.WriteLine($"result={result},expected=7"); bool result2 = Arrays.ContainsDuplicate(ConvertToArray("7,1,5,3,6,4")); Console.WriteLine($"result={result2},expected=False"); var result3 = ConvertToArray("1,2,3,4,5,6"); Arrays.Rotate(result3, 4); Console.WriteLine($"result=[{string.Join(",", result3)}],expected=[3,4,5,6,1,2]"); int result4 = Arrays.SingleNumber(ConvertToArray("4,1,2,1,2")); Console.WriteLine($"result={result4},expected=4"); int[] result5 = Arrays.Intersect(ConvertToArray("1,2,2,1"), ConvertToArray("2,2")); Console.WriteLine($"result=[{String.Join(",",result5)}],expected=[2,2]"); int[] result6 = Arrays.PlusOne(ConvertToArray("2,9")); Console.WriteLine($"result=[{String.Join(",", result6)}],expected=[3,0]"); int[] result7 = new int[] { 0, 1, 0, 3, 12 }; Arrays.MoveZeroes(result7); Console.WriteLine($"result=[{String.Join(",", result7)}],expected=[1,3,12,0,0]"); string result8 = Strings.ReverseString("hello"); Console.WriteLine($"result=[{result8}],expected=[olleh]"); int result9 = Strings.Reverse(-123456); Console.WriteLine($"result=[{result9}],expected=[-654321]"); int result10 = Strings.FirstUniqChar("abcdabb"); Console.WriteLine($"result={result10},expected=2"); bool result11 = Strings.IsAnagram("anagram", "nagaram"); Console.WriteLine($"result={result11},expected=True"); bool result12 = Strings.IsPalindrome("A man, a plan, a canal: Panama"); Console.WriteLine($"result={result12},expected=True"); int result13 = Strings.MyAtoi(" -4193 with words"); Console.WriteLine($"result=[{result13}],expected=[-4193]"); int[] result14 = Arrays.TwoSum(ConvertToArray("2,11,6,3"), 14); Console.WriteLine($"result=[{ String.Join(",", result14)}],expected =[1,3]"); string result15 = Strings.LongestCommonPrefix(new string[] { "flower", "flow", "flight" }); Console.WriteLine($"result=[{result15}],expected =[fl]"); LinkedLists.ListNode result16 = LinkedLists.RemoveNthFromEnd(LinkedLists.ConvertToListNode("1,2,3,4,5"), 2); Console.WriteLine($"result=[{LinkedLists.ListNodeToString(result16)}],expected =[1,2,3,5]"); LinkedLists.ListNode result17 = LinkedLists.ReverseList(LinkedLists.ConvertToListNode("1,2,3,4,5")); Console.WriteLine($"result=[{LinkedLists.ListNodeToString(result17)}],expected =[5,4,3,2,1]"); bool result18 = Strings.IsPalindrome(121); Console.WriteLine($"result={result18},expected=True"); LinkedLists.ListNode result19 = LinkedLists.MergeTwoLists( LinkedLists.ConvertToListNode("1,2,4"), LinkedLists.ConvertToListNode("1,3,4")); Console.WriteLine($"result=[{LinkedLists.ListNodeToString(result19)}],expected =[1,1,2,3,4,4]"); String result20 = Strings.CountAndSay(6); Console.WriteLine($"result={result20},expected=312211"); bool result21 = LinkedLists.IsPalindrome(LinkedLists.ConvertToListNode("1,2,3,2,1")); Console.WriteLine($"result=[{result21}],expected =[True]"); bool result22 = LinkedLists.IsPalindrome2(LinkedLists.ConvertToListNode("1,2,3, 2,1")); Console.WriteLine($"result=[{result22}],expected =[True]"); int result23 = Trees.MaxDepth(Trees.CreateBinaryTree(new int?[] { 3, 9, 20, null, null, 15, 7 })); Console.WriteLine($"result=[{result23}],expected =[3]"); bool result24 = Trees.IsValidBST(Trees.CreateBinaryTree(new int?[] { 5, 1, 4, null, null, 3, 6 })); Console.WriteLine($"result=[{result24}],expected =[False]"); bool result25 = Trees.IsSymmetric(Trees.CreateBinaryTree(new int?[] { 1, 2, 2, 3, 4, 4, 3 })); Console.WriteLine($"result=[{result25}],expected =[True]"); var result26 = Trees.LevelOrder(Trees.CreateBinaryTree(new int?[] { 3, 9, 20, null, null, 15, 7 })); Console.WriteLine($"result={ListOfListsToString(result26)},expected = [[3],[9,20],[15,7]]"); var result27 = Trees.TreeNodeToString(Trees.CreateBinaryTree(new int?[] { 3, 9, 20, null, null, 15, 7 })); Console.WriteLine($"result={result27},expected = [3,9,20,null,null,15,7,null,null,null,null,]"); Trees.TreeNode result28 = Trees.SortedArrayToBST(new[] { -10, -3, 0, 5, 9 }); Console.WriteLine($"result={Trees.TreeNodeToString(result28)},expected = [0,-10,5,null,-3,null,9,null,null,null,null,]"); var result29 = new[] { 1, 2, 3, 0, 0, 0 }; Arrays.MergeSorted(result29, 3, new[] { 2, 5, 6 }, 3); Console.WriteLine($"result=[{string.Join(",", result29)}],expected=[1,2,2,3,5,6]"); LinkedLists.ListNode result30 = LinkedLists.AddTwoNumbers( LinkedLists.ConvertToListNode("1,9,9"), LinkedLists.ConvertToListNode("9")); Console.WriteLine($"result=[{LinkedLists.ListNodeToString(result30)}],expected =[0,0,0,1]"); int result31 = Strings.LengthOfLongestSubstring("peerpe"); Console.WriteLine($"result={result31},expected=3"); Console.WriteLine($"result={Strings.RomanToInt("LVIII")},expected=58"); Console.WriteLine($"result={Strings.RomanToInt("MCMXCIV")},expected=1994"); Console.WriteLine($"result=[{ListOfListsToString(Arrays.FourSum(new[] { 1, 0, -1, 0, -2, 2 }, 0))}],expected=[[-1, 0, 0, 1],[-2, -1, 1, 2],[-2, 0, 0, 2]]"); Console.WriteLine($"result={DynamicProgramming.ClimbStairs(5)},expected=8"); Console.WriteLine($"result={Strings.LongestPalindrome("cbbd")},expected=cbbd"); Console.ReadLine(); }