Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
#1

Как запихнуть в очередь указатель на узел дерева? - C++

12.02.2013, 22:23. Просмотров 369. Ответов 9
Метки нет (Все метки)

как запихнуть в очередь указатель на узел дерева

Добавлено через 16 минут
up?

Добавлено через 4 минуты
как создать из узлов двоичного дерева очередь??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 22:23     Как запихнуть в очередь указатель на узел дерева?
Посмотрите здесь:

Двоичное дерево: как, зная данный узел дерева, изменить его родительский узел? - C++
как зная данный узел дерева измениь его родтельский узел? спасибо.

Удалить узел бинарного дерева - C++
необходимо удалить узел, у которого нет потомков нужно обнулить ссылку предка и освободить память, но не совсем понимаю, как это сделать....

Неправильно удаляет узел из бинарного дерева - C++
Помогите подправить фунцию SearchDelete...Почему-то не работет. //13. Побудувати довільне бінарне дерево, зчитавши числові значення...

Создать полную копию исходного дерева и проверить узел - C++
У меня есть дерево выражения(двоичное дерево). По алгоритму происходит следующее: 1. Проверяю каждый узел дерева. 2. Если с ним...

Списки структур. Указатель на узел другого списка внутри структуры - C++
Имеется следующий кусок кода: struct date { int day; int month; int year; }; /* Пациент */

Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и указатель. Не - C++
Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и указатель. Необходимо добавить узел после...

Организовать ввод в однонаправленный список, узел списка состоит из двух полей: целое число и указатель - C++
Здравствуйте, нужна ваша помощь!!! Нужно написать программу Организовать ввод в однонаправленный список. Узел списка состоит из двух...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
12.02.2013, 22:29     Как запихнуть в очередь указатель на узел дерева? #2
Вам как с STL можно? или ручками очередь?
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
12.02.2013, 22:31  [ТС]     Как запихнуть в очередь указатель на узел дерева? #3
ручками
Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
12.02.2013, 22:34     Как запихнуть в очередь указатель на узел дерева? #4
с классами знакомы?
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
12.02.2013, 22:38  [ТС]     Как запихнуть в очередь указатель на узел дерева? #5
знаком

Добавлено через 1 минуту
если взять просто список и двоичное дерево

со списком понятно

с двоичным деревом нет
Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
12.02.2013, 22:52     Как запихнуть в очередь указатель на узел дерева? #6
ну создайте класс- очередь, и поле пускай у него будет указатель на узел дерева. Вот и всё.

Добавлено через 4 минуты
Можете скинуть структуру дерева.
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
12.02.2013, 23:01  [ТС]     Как запихнуть в очередь указатель на узел дерева? #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#ifndef TREE_H
#define TREE_H
 
#include <iostream>
using std::cout;
using std::endl;
 
#include <new>
#include "Treenode.h"
 
#include "queue.h"// Подключаем класс queue(очередь)
 
// Tree class-template definition
template< typename NODETYPE >
class Tree
{
public:
   Tree(); // constructor
   void insertNode( const NODETYPE & );
   void preOrderTraversal() const;
   void inOrderTraversal() const;
   void postOrderTraversal() const;
   
   void levelOrder();
 
private:
   TreeNode< NODETYPE > *rootPtr;
 
   // utility functions
   void insertNodeHelper( TreeNode< NODETYPE > **, const NODETYPE & );
   void preOrderHelper( TreeNode< NODETYPE > * ) const;
   void inOrderHelper( TreeNode< NODETYPE > * ) const;
   void postOrderHelper( TreeNode< NODETYPE > * ) const;
}; // end class Tree
 
// constructor
template< typename NODETYPE >
Tree< NODETYPE >::Tree() 
{ 
   rootPtr = 0; // indicate tree is initially empty 
} // end Tree constructor
 
// insert node in Tree
template< typename NODETYPE >
void Tree< NODETYPE >::insertNode( const NODETYPE &value )
{ 
   insertNodeHelper( &rootPtr, value ); 
} // end function insertNode
 
// utility function called by insertNode; receives a pointer
// to a pointer so that the function can modify pointer's value
template< typename NODETYPE >
void Tree< NODETYPE >::insertNodeHelper( 
   TreeNode< NODETYPE > **ptr, const NODETYPE &value )
{
   // subtree is empty; create new TreeNode containing value
   if ( *ptr == 0 )  
      *ptr = new TreeNode< NODETYPE >( value );
   else // subtree is not empty
   {
      // data to insert is less than data in current node
      if ( value < ( *ptr )->data )
         insertNodeHelper( &( ( *ptr )->leftPtr ), value );
      else
      {
         // data to insert is greater than data in current node
         if ( value > ( *ptr )->data )
            insertNodeHelper( &( ( *ptr )->rightPtr ), value );
         else // duplicate data value ignored
            cout << value << " dup" << endl;
      } // end else
   } // end else
} // end function insertNodeHelper
 
// begin preorder traversal of Tree
template< typename NODETYPE > 
void Tree< NODETYPE >::preOrderTraversal() const
{ 
   preOrderHelper( rootPtr ); 
} // end function preOrderTraversal
 
// utility function to perform preorder traversal of Tree
template< typename NODETYPE >
void Tree< NODETYPE >::preOrderHelper( TreeNode< NODETYPE > *ptr ) const
{
   if ( ptr != 0 ) 
   {
      cout << ptr->data << ' '; // process node          
      preOrderHelper( ptr->leftPtr ); // traverse left subtree 
      preOrderHelper( ptr->rightPtr ); // traverse right subtree
   } // end if
} // end function preOrderHelper
 
// begin inorder traversal of Tree
template< typename NODETYPE >
void Tree< NODETYPE >::inOrderTraversal() const
{ 
   inOrderHelper( rootPtr ); 
} // end function inOrderTraversal
 
// utility function to perform inorder traversal of Tree
template< typename NODETYPE >
void Tree< NODETYPE >::inOrderHelper( TreeNode< NODETYPE > *ptr ) const
{
   if ( ptr != 0 ) 
   {
      inOrderHelper( ptr->leftPtr ); // traverse left subtree  
      cout << ptr->data << ' '; // process node                
      inOrderHelper( ptr->rightPtr ); // traverse right subtree
   } // end if
} // end function inOrderHelper
 
// begin postorder traversal of Tree
template< typename NODETYPE >
void Tree< NODETYPE >::postOrderTraversal() const
{ 
   postOrderHelper( rootPtr ); 
} // end function postOrderTraversal
 
// utility function to perform postorder traversal of Tree
template< typename NODETYPE >
void Tree< NODETYPE >::postOrderHelper( TreeNode< NODETYPE > *ptr ) const
{
   if ( ptr != 0 ) 
   {
      postOrderHelper( ptr->leftPtr ); // traverse left subtree  
      postOrderHelper( ptr->rightPtr ); // traverse right subtree
      cout << ptr->data << ' '; // process node                  
   } // end if
} // end function postOrderHelper
 
 
template< typename NODETYPE >
void Tree< NODETYPE >::levelOrder()
{
    Queue<NODETYPE> data;//создаем очередь
    data.enqueue(rootPtr);
 
    /*
    NODETYPE value;
    data.dequeue(value);
    cout<<value<<endl;
    data.dequeue(value);
*/
 
    cout<<"enter good work"<<endl;
}
 
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef TREENODE_H
#define TREENODE_H
 
// forward declaration of class Tree
template< typename NODETYPE > class Tree;  
 
// TreeNode class-template definition
template< typename NODETYPE >
class TreeNode 
{
   friend class Tree< NODETYPE >;
public:
   // constructor
   TreeNode( const NODETYPE &d )   
      : leftPtr( 0 ), // pointer to left subtree
        data( d ), // tree node data
        rightPtr( 0 ) // pointer to right substree
   { 
      // empty body 
   } // end TreeNode constructor
 
   // return copy of node's data
   NODETYPE getData() const 
   { 
      return data; 
   } // end getData function
private:
   TreeNode< NODETYPE > *leftPtr; // pointer to left subtree
   NODETYPE data;
   TreeNode< NODETYPE > *rightPtr; // pointer to right subtree
}; // end class TreeNode
 
#endif
Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template< typename NODETYPE >
void Tree< NODETYPE >::levelOrder()
{
    Queue<NODETYPE> data;//создаем очередь
    data.enqueue(rootPtr); <<---------------здесь пытаюсь запихнуть в очередь
 
    /*
    NODETYPE value;
    data.dequeue(value);
    cout<<value<<endl;
    data.dequeue(value);
*/
 
    cout<<"enter good work"<<endl;
}
Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
12.02.2013, 23:16     Как запихнуть в очередь указатель на узел дерева? #8
Так и создавайте очередь
C++
1
Queue<TreeNode*> data
Вот вам указатель на узел дерева.
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
12.02.2013, 23:18  [ТС]     Как запихнуть в очередь указатель на узел дерева? #9
буду пробовать...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 23:19     Как запихнуть в очередь указатель на узел дерева?
Еще ссылки по теме:

Деревья С++ (функция, которая получает указатель на корень дерева и возвращает длину самой длинной ветки на дереве) - C++
Здравствуйте! Помогите, пожалуйста, в написании функции ,которая получает указатель на корень дерева и возвращает длинну самой длинной...

Как в char запихнуть переменную? - C++
Здрасте, подскажите пожалуйста, возможно ли в char запихнуть свою переменную? Допустим int x = 123; char com = &quot;Asd&quot;+x+&quot;.&quot;; Ну, я...

Как xFA запихнуть в string? - C++
В xml фале содержится подобная штука Как при редактировании файла её не потерять? Под редактированием я понимаю: считывание всех...

Как запихнуть массив строк в класс? - C++
Есть класс, один из методов который использует массив строк: char* pszName = { &quot;Anton&quot;, &quot;Alex&quot; }; Сейчас это вне класса, как в...

подскажите пожалуйста как запихнуть в класс конструктор - C++
по лабораторной задание: создать программу которая решает заданный интеграл методом трапеций...тра-ля-ля...создавать с учетом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
12.02.2013, 23:19     Как запихнуть в очередь указатель на узел дерева? #10
Вы в очереди будете хранить указатель на узел дерева, а вот откуда вы его выцепите, указатель это другое дело.
Yandex
Объявления
12.02.2013, 23:19     Как запихнуть в очередь указатель на узел дерева?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru