Advertisement
myname0

практикум 15_2_7

Feb 26th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.37 KB | None | 0 0
  1. //1
  2.  public static void Across(Node node, ref string s, bool detailed)
  3.                 {
  4.                     /*
  5.                      Аргументы метода:
  6.                      1. TreeNode node - текущий "элемент дерева" (ref  передача по ссылке)      
  7.                      2. ref string s - строка, в которой накапливается результат (ref - передача по ссылке)
  8.                     */
  9.                     var queue = new Queue<Node>(); // создать новую очередь
  10.                     if (detailed) s += "    заносим в очередь значение " + node.inf.ToString() + Environment.NewLine; queue.Enqueue(node); // поместить в очередь первый уровень
  11.                     while (queue.Count != 0) // пока очередь не пуста
  12.                     {
  13.                         //если у текущей ветви есть листья, их тоже добавить в очередь
  14.                         if (queue.Peek().left != null)
  15.                         {
  16.                             if (detailed) s += "    заносим в очередь значение " + queue.Peek().left.inf.ToString() + " из левого поддерева" + Environment.NewLine;
  17.                             queue.Enqueue(queue.Peek().left);
  18.                         }
  19.                         if (queue.Peek().right != null)
  20.                         {
  21.                             if (detailed) s += "    заносим в очередь значение " + queue.Peek().right.inf.ToString() + " из правого поддерева" + Environment.NewLine;
  22.                             queue.Enqueue(queue.Peek().right);
  23.                         }
  24.                         //извлечь из очереди информационное поле последнего элемента
  25.                         if (detailed) s += "    извлекаем значение из очереди: " + queue.Peek().inf.ToString() + Environment.NewLine;
  26.                         else s += queue.Peek().inf.ToString() + " "; // убрать последний элемент очереди
  27.                         queue.Dequeue();
  28.                     }
  29.                 }
  30. //2
  31.  public static void LevelPrint(Node r)
  32.                 {
  33.                     Queue<Node> queue = new Queue<Node>();
  34.                     Console.WriteLine("{0} ", r.inf);
  35.                     int temp = (int)r.inf; ;
  36.                     queue.Enqueue(r);
  37.                     while (queue.Count != 0)
  38.                     {
  39.                         if(temp > (int)queue.Peek().inf)
  40.                             Console.WriteLine();
  41.                         temp = (int)queue.Peek().inf;
  42.                         if (queue.Peek().left != null)
  43.                         {
  44.                             Console.Write("{0} ", queue.Peek().left.inf);
  45.                             queue.Enqueue(queue.Peek().left);
  46.                            
  47.                         }
  48.                         if (queue.Peek().right != null)
  49.                         {
  50.                             Console.Write("{0} ", queue.Peek().right.inf);
  51.                             queue.Enqueue(queue.Peek().right);
  52.                         }
  53.                         queue.Dequeue();
  54.                     }
  55.                 }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement