1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК ! 
4. НЕ используйте форум для личного общения! 
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел! 
![]() ![]()  | 
	
| biba | 
                        
			
			  
			
				 Сообщение
					#1				
			 
		 | 
	
        	
        		![]() Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Женский Репутация:    0           	 | 
       
			
			 Хотелось бы узнать вот какой момент - каким образом создается бинарное дерево из элементов списка ( список был введен в первой части программы )  
			
			
					
		 | 
	
| xds | 
                        
			
			  
			
				 Сообщение
					#2				
			 
		 | 
	
        	
        		![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация:    26           	 | 
       
			
			 Вот алгоритм добавлениея элемента в двоичное дерево: 
			
			Если дерево пусто, то просто сделаем новый элемент корнем. В противном случае сравним новый элемент со значением, хранящимся в корне - если меньше, то повторим все манипуляции для левого поддерева, иначе - для правого. Подозреваю, что код более информативен, чем сонная белиберда, написанная выше...:P Код program Tree; { Елемент списка/узел двоичного дерева } type PNode = ^TNode; TNode = record Value: Integer; Left, Right: PNode; end; { Добавление элемента в двоичное дерево } procedure InsertNode(var Root, Node: TNode); begin if Node.Value < Root.Value then if Root.Left = nil then Root.Left := @Node else InsertNode(Root.Left^, Node) else if Root.Right = nil then Root.Right := @Node else InsertNode(Root.Right^, Node); end; { Обход двоичного дерева в глубину с выводом значений узлов } procedure TreeWalk(const Root: PNode); begin if Root = nil then Exit; TreeWalk(Root^.Left); Write(' ', Root^.Value); TreeWalk(Root^.Right); end; const MaxSize = 1000; var List: array[0..MaxSize - 1] of TNode; i, n: Integer; f: Text; begin { Ввод списка из файла } Assign(f, 'list.txt'); Reset(f); Read(f, n); { первое число - количество элементов } for i := 0 to n - 1 do Read(f, List[i].Value); Close(f); { Исключение случай пустого списка/дерева } if n = 0 then Exit; { Построение дерева } for i := 1 to n - 1 do begin List[i].Left := nil; List[i].Right := nil; InsertNode(List[0], List[i]); end; { Обход в глубину и вывод } TreeWalk(@List); Writeln; end. -------------------- The idiots are winning. 
					
		 | 
	
| Guest | 
                        
			
			  
			
				 Сообщение
					#3				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 xds, Я просто твоя фанатка! =)) 
			
			
					
		 | 
	
| regromus | 
                        
			
			  
			
				 Сообщение
					#4				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Перец я не ушел с универа благодаря тебе СПАСИБО!!!!! :flowers: 
			
			
					
		 | 
	
| Guest | 
                        
			
			  
			
				 Сообщение
					#5				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Млин.. ПСИБА!!! :-) 
			
			
					
		 | 
	
![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 18:48 |