<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=418172&amp;view=findpost&amp;p=3828462</guid>
        <pubDate>Tue, 14 Apr 2020 13:01:19 +0000</pubDate>
        <title>Бинарное дерево поиска (горизонтальный обход) + queue(FIFO)</title>
        <link>https://forum.sources.ru/index.php?showtopic=418172&amp;view=findpost&amp;p=3828462</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=418172&view=findpost&p=3828459'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2020-04-14T15:50:31+03:00">14.04.20, 12:50</time></span><div class='quote '>Ты предлагаешь обход дерева в глубину, но раз в задании говорится про очередь и вывод дерева по уровням, значит нужен обход в ширину. Заводим очередь (односвязный список), в которой изначально лежит корневой узел дерева, затем в цикле берем первый узел из очереди, выводим его и добавляем в конец списка дочерние узлы (если есть) слева направо, повторяем, пока очередь не опустеет. </div></div><br>
ааааааааааааа, вот оно как)<br>
я чегот совсем забыл про &quot;BFS&quot; в деревьях, т к их не принято так обходить...<br>
<br>
ну, значит, такие будут структуры данных:<br>
<br>
1. элемент бинарки<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">struct TNode</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;int key;</div><div class="code_line">&nbsp;&nbsp;TNode* left;</div><div class="code_line">&nbsp;&nbsp;TNode* right;</div><div class="code_line">};</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
2. элементы очереди<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">struct Telem</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;int key;</div><div class="code_line">&nbsp;&nbsp;TElem* next;</div><div class="code_line">&nbsp;&nbsp;int level; &nbsp; &nbsp;// вроде он тут нужен...хм...подумаю еще</div><div class="code_line">};</div></ol></div></div></div></div><br>
<br>
спс <strong class='tag-b'>AVA12</strong>]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=418172&amp;view=findpost&amp;p=3828459</guid>
        <pubDate>Tue, 14 Apr 2020 12:50:31 +0000</pubDate>
        <title>Бинарное дерево поиска (горизонтальный обход) + queue(FIFO)</title>
        <link>https://forum.sources.ru/index.php?showtopic=418172&amp;view=findpost&amp;p=3828459</link>
        <description><![CDATA[AVA12: Ты предлагаешь обход дерева в глубину, но раз в задании говорится про очередь и вывод дерева по уровням, значит нужен обход в ширину. Заводим очередь (односвязный список), в которой изначально лежит корневой узел дерева, затем в цикле берем первый узел из очереди, выводим его и добавляем в конец списка дочерние узлы (если есть) слева направо, повторяем, пока очередь не опустеет.]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=418172&amp;view=findpost&amp;p=3828455</guid>
        <pubDate>Tue, 14 Apr 2020 12:19:25 +0000</pubDate>
        <title>Бинарное дерево поиска (горизонтальный обход) + queue(FIFO)</title>
        <link>https://forum.sources.ru/index.php?showtopic=418172&amp;view=findpost&amp;p=3828455</link>
        <description><![CDATA[FasterHarder: Всем хай&#33; Сходу к делу&#33;<br>
<br>
Задано бинарное дерево поиска. Нужно, используя структуру Queue(FIFO, очередь), сделать поуровневый обход с выводом на экран (горизонтальная печать дерева).<br>
<br>
На рис. представлен пример бинарки + результат.<br>
<span class="b-attach" data-size="28553" data-hits="1107" data-attach-id="61835" data-attach-post-id="3828455">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3828455&amp;attach_id=61835' title='Скачать файл' target='_blank'>___________________________.png</a> (, : 1107)
		</span><br>
<br>
Мне непонятно здесь, как правильно задействовать очередь.<br>
<br>
Что хочется сделать.<br>
1. запустить симметричный обход дерева, записывая ключи дерева в очередь (ASC - по возрастанию).<br>
Получится такая очередь: -10, 16, 17, 28, 29, 33, 50, 73, 86, 88, 90.<br>
<br>
Также нужно дополнительно учесть уровень, на котором находится считываемый узел, поэтому запомним и эту информацию в элементах очереди:<br>
Очередь из элементов: -10(2), 16(3), 17(1), 28(2), 29(4), 33(3), 50(0), 73(1), 86(3), 88(4), 90(2)<br>
<br>
Прототип функции обхода дерева такой примерно:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void LKP(TElem* proot, int plevel); &nbsp; // proot - указатель на текущее поддерево, plevel - уровень обрабатываемого узла</div></ol></div></div></div></div><br>
<br>
В принципе, вот в принципе, дальше можно бегать по очереди и распечатывать сначала все узлы с уровнем = 0, затем все узлы с уровнем = 1 и т.д. Но во-первых, классическая очередь не имеет встроенной операции сканирования своих элементов (можно удалить из начала и вставить в конец), а во-вторых, зачем тогда сдалась очередь для подобной обработки - подошел бы простой одномерный массив (удобнее в разы, т к есть встроенный индексатор).<br>
<br>
Подскажите, как правильно использовать ОЧЕРЕДЬ для решения поставленной задачи??<br>
<br>
спс. за внимание]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	