Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.33 KB | None | 0 0
  1.  public void DumpBinaryTree()
  2.         {
  3.             const string filePath = @"../../BinaryTree.txt";
  4.             StreamWriter writter = new StreamWriter(filePath);
  5.             using (writter)
  6.             {
  7.                 RecursiveWrite(writter);
  8.             }
  9.            
  10.         }
  11.  
  12.  
  13.         public void RecursiveWrite(StreamWriter writter, Node<T> node)
  14.         {
  15.             if (node == null)
  16.             {
  17.                 writter.Write("-1 ");
  18.                 return;
  19.             }
  20.  
  21.             string data = node.Value.ToString();
  22.             int charsData = data.Length;
  23.             writter.Write(charsData + " " + data + " ");
  24.  
  25.             for (int i = 0; i < node.ChildrenCount; i++)
  26.             {
  27.                 RecursiveWrite(writter, node.Children[i]);
  28.             }
  29.  
  30.             for (int i = node.ChildrenCount; i < 2; i++)
  31.             {
  32.                 RecursiveWrite(writter, null);
  33.             }
  34.         }
  35.  
  36.  
  37.         public void RecursiveWrite(StreamWriter writter)
  38.         {
  39.             RecursiveWrite(writter, this.root);
  40.         }
  41.  
  42.         public Tree<string> LoadBinaryTree()
  43.         {
  44.             const string filePath = @"../../BinaryTree.txt";
  45.             StreamReader reader = new StreamReader(filePath);
  46.             Tree<string> newTree = null;
  47.  
  48.             using (reader)
  49.             {
  50.                 string line = reader.ReadLine();
  51.                 string[] treeParts = line.Split();
  52.  
  53.                 int now = 0;
  54.                 newTree = MakeTree(treeParts,ref now);
  55.             }
  56.             return newTree;
  57.         }
  58.  
  59.         private Tree<string> MakeTree(string[] treeParts,ref int now)
  60.         {
  61.             if (treeParts[now] == "-1")
  62.             {
  63.                
  64.                 return null;
  65.             }
  66.  
  67.             now++;
  68.             Tree<string> tree = new Tree<string>(treeParts[now]);
  69.  
  70.             now++;
  71.             Tree<string> leftSubtree = MakeTree(treeParts, ref now);
  72.            
  73.             now++;
  74.             Tree<string> rightSubtree = MakeTree(treeParts, ref now);
  75.  
  76.             if (leftSubtree != null)
  77.             {
  78.                 tree.root.AddChild(leftSubtree.root);
  79.             }
  80.             if (rightSubtree != null)
  81.             {
  82.                 tree.root.AddChild(rightSubtree.root);
  83.             }
  84.  
  85.             return tree;
  86.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement