ogv

Untitled

ogv
Aug 31st, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.15 KB | None | 0 0
  1. /*
  2. Runtime: 360 ms, faster than 92.42% of C# online submissions for Find Duplicate Subtrees.
  3. Memory Usage: 52.5 MB, less than 100.00% of C# online submissions for Find Duplicate Subtrees.
  4. */
  5. public class Solution {  
  6.     public IList<TreeNode> FindDuplicateSubtrees(TreeNode root) {
  7.         var map = new Dictionary<TreeNode, string>();
  8.        
  9.         if (root != null) {
  10.             serialize(root, map);
  11.         }
  12.        
  13.         return map.GroupBy(kv => kv.Value).Where(g => g.Count() > 1).Select(g => g.First().Key).ToList();
  14.     }
  15.    
  16.     private string serialize(TreeNode root, IDictionary<TreeNode, string> map) {
  17.         var sb = new StringBuilder();
  18.         sb.Append(root.val);
  19.        
  20.         if (root.left != null) {            
  21.             sb.Append('L');
  22.             sb.Append(serialize(root.left, map));            
  23.         }      
  24.        
  25.         if (root.right != null) {            
  26.             sb.Append('R');
  27.             sb.Append(serialize(root.right, map));
  28.         }
  29.        
  30.         sb.Append('.');
  31.                
  32.         var result = sb.ToString();
  33.         map[root] = result;
  34.         return result;
  35.     }  
  36. }
Advertisement
Add Comment
Please, Sign In to add comment