Поиск листьев в дереве
Подскажите пожалуйста. Хочу изменить функцию вывода элементов дерева, так чтобы выводились те элементы которые не имееют детей. Не пойму как сюда вставить условие, на проверку пустого значения элементов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
void Tree::PrintTreeVn(TreeNode *t, int level) { if (t!=NULL) { PrintTree(t->right, level+1); IndentBlanks(6*level); cout t->data endl; PrintTree(t->left, level+1); } }
Ошибка в считывание листьев в дереве
Написал программу для считывания листьев в дереве, но в строке 56 ошибка: invalid conversion from.
Количество листьев в бинарном дереве
Задача: Найти количество листьев в дереве. Собственно ввод и вывод дерева есть: #include.
Найти сумму листьев в бинарном дереве поиска
Дано бинарное дерево поиска(ключи-целые числа).Найти сумму листьев. Вот мой код.Но он не.
if (t!=NULL && (t.right()==NULL && t.left()==NULL))
Добавлено через 16 часов 22 минуты
не работает ваш вариант, ошибка компиляции на t.right. Если делаю t ->right компилируется, но не работает как надо.
каддафи, его вариант работать не будет. Даже не пытайся. Неужели не видишь, что у него отсутствует рекурсивный вызов функции для потомков узла?
Добавлено через 32 секунды
замени
if (t!=NULL && (t.right()==NULL && t.left()==NULL))
на
if (t!=NULL)
Добавлено через 1 минуту
void Tree::PrintTreeVn(TreeNode *t, int level) { if (t!=NULL) { PrintTree(t->right, level+1); IndentBlanks(6*level); if (t.right()==NULL && t.left()==NULL) cout t->data endl; PrintTree(t->left, level+1); } }
Не компилируется так. Ошибка `right’ is not a type .
Добавлено через 4 минуты
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 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
#include using namespace std; ////////////////////////////////////////////////////////////// class TreeNode { public: int data; TreeNode *left; TreeNode *right; TreeNode(int item, TreeNode *l = NULL, TreeNode *r = NULL); }; TreeNode::TreeNode(int item, TreeNode *l, TreeNode *r) { data = item; left = l; right = r; } ////////////////////////////////////////////////////////////// class Tree { public: Tree(); ~Tree(void); TreeNode *FindNode(int, TreeNode *&); void Insert(int); void Delete(int); void DeleteTree(TreeNode *); void PrintTree(TreeNode *, int); void PrintTreeVn(TreeNode *, int); void Inorder(TreeNode *); TreeNode* GetTreeNode(int item, TreeNode *l = NULL, TreeNode *r = NULL); void FreeTreeNode(TreeNode *p); int size; TreeNode *root; TreeNode *current; }; Tree::Tree() { root = NULL; size = 0; } Tree::~Tree() { DeleteTree(root); } TreeNode* Tree::GetTreeNode(int item, TreeNode *l, TreeNode *r) { TreeNode *p; p = new TreeNode(item, l, r); return p; } void Tree::FreeTreeNode(TreeNode *p) { delete p; } void Tree::DeleteTree(TreeNode *t) { if (t!=NULL) { DeleteTree(t->left); DeleteTree(t->right); FreeTreeNode(t); } } void IndentBlanks(int num) { for(int i=0; inum; i++) cout <" "; } void Tree::PrintTree(TreeNode *t, int level) { if (t!=NULL) { PrintTree(t->right, level+1); IndentBlanks(6*level); cout - >data ; PrintTree(t->left, level+1); } } //////////////////////////////////////////////// Poisk i vivod listjev void Tree::PrintTreeVn(TreeNode *t, int level) { if (t!=NULL ) { PrintTree(t->right, level+1); IndentBlanks(6*level); cout - >data ; PrintTree(t->left, level+1); } } ///////////////////////////////////////////////////////////// void Tree::Inorder(TreeNode *t) { if (t!=NULL) { Inorder(t->left); cout - >data <" "; Inorder(t->right); } } TreeNode* Tree::FindNode(int item, TreeNode *&parent) { TreeNode *t = root; parent = NULL; while(t!=NULL) { if (item == t->data) break; else { parent = t; if (item t->data) t = t->left; else t = t->right; } } return t; } void Tree::Insert(int item) { TreeNode *t = root, *parent = NULL, *newNode; newNode = GetTreeNode(item, NULL, NULL); while(t!=NULL) { parent = t; if (item t->data) t = t->left; else t = t->right; } if (parent == NULL) root = newNode; else if (item parent->data) parent->left = newNode; else parent->right = newNode; current = newNode; size++; } void Tree::Delete(int item) { TreeNode *DNodePtr; //raditajs uz dzesamo mezglu TreeNode *PNodePtr; //raditajs uz dzesama mezgla prieksteci TreeNode *RNodePtr; //raditajs uz mezglu kas aizvieto dzeesamo //mekleejam elementu kas jaadzees, un taa prieksteci if((DNodePtr = FindNode(item, PNodePtr)) == NULL) return; //ja viens peectecis if(DNodePtr->right == NULL) RNodePtr = DNodePtr->left; else if(DNodePtr->left == NULL) RNodePtr = DNodePtr->right; //ja divi peecteci else { TreeNode *PofRNodePtr = DNodePtr; //raditajs uz RNodePtr prieksteci RNodePtr = DNodePtr->left; //izveelamies kreisa zara 1. elementu, jo tas kas aizvieto ir mazaak par dzeesamo while(RNodePtr->right != NULL) //kreisaa pusee ejam liidz galam pa labi, saglabajot RNodePtr un PofRNodePtr vertiibas { PofRNodePtr = RNodePtr; RNodePtr = RNodePtr->right; } if(PofRNodePtr == DNodePtr) //kreisaa pusee 1. elementam nav peectecu labaa pusee (Situaacija C1) { RNodePtr->right = DNodePtr->right; //pievienojam dzeesama elementa labo apakskoku sim elementam } else //kreisaa pusee 1. elementam ir peecteci labaa pusee (Situaacija C2) //atrasto elementu jaanem araa, jaasavieno iznemta elementa zaru ar pamatkoku { RNodePtr->right = DNodePtr->right; PofRNodePtr->right = NULL; RNodePtr->left = DNodePtr->left; } } if(PNodePtr == NULL) { RNodePtr->left = root->left; RNodePtr->right = root->right; root = RNodePtr; } //jaapievieno RNodePtr mezglu pie PNodePtr mezgla no pareizaas puses else if(DNodePtr->data PNodePtr->data) PNodePtr->left = RNodePtr; else PNodePtr->right = RNodePtr; FreeTreeNode(DNodePtr); //dzeesam elementu size--; } ////////////////////////////////////////////////////////////// int main() { Tree tree; tree.Insert(5); tree.Insert(7); tree.Insert(2); tree.Insert(8); tree.Insert(15); tree.Insert(3); tree.Insert(1); tree.Insert(4); tree.Insert(7); tree.Inorder(tree.root); cout ; tree.PrintTree(tree.root, 0); cout <"************Vivod vneshnih vershin*****************"; tree.PrintTreeVn(tree.root,0); // tree.Delete(50); // cout // tree.PrintTree(tree.root, 0); system("PAUSE"); return 0; }
Источник
Lost Ark: полное руководство по листьям мирового дерева
Гайды
Сбор листьев мирового дерева — важная часть Lost Ark. Чтобы помочь вам собрать все листья, вот полное руководство по листьям мирового дерева.
Собирая листья мирового дерева, вы можете стать сильнее в Lost Ark. Каждые шесть листьев, которые вы получаете, открывают определенную награду, которая включает в себя бонусы, ремесленные навыки и талисманы, а также другие предметы.
Чепмен известный как «Продавец листьев Мирового Древа», и его можно найти во всех крупных городах Затерянного Ковчега. Поговорив с Чепменом, вы можете обменять свои Листья Мирового Древа на ценные предметы в Затерянном Ковчеге.
Как собрать все листья мирового дерева в Lost Ark
Первый лист мирового древа, который вы должны получить, будет выполнен в квесте «Коллекционирование для развлечения». После этого вы можете получить другие Листья Мирового Дерева случайным образом, выполняя различные действия.
Вы можете получить определенные Листья Мирового Дерева, выполняя определенные действия. Вот список действий, которые вы должны выполнить, чтобы получить определенный номер Листа Мирового Древа.
Собирательство
Охота
- Лист Мирового Дерева 5
- Лист Мирового Древа 11
- Лист Мирового Дерева 17
- Лист Мирового Дерева 23
- Лист Мирового Дерева 29
- Лист Мирового Дерева 44
- Лист Мирового Дерева 53
Добыча/Добыча
- Мировое Древо Лист 4
- Лист Мирового Дерева 10
- Лист Мирового Дерева 16
- Лист Мирового Древа 22
- Лист Мирового Дерева 28
- Лист Мирового Древа 43
- Лист Мирового Дерева 52
- Лист Мирового Дерева 61
- Лист Мирового Дерева 70
Заготовка/рубка дров
- Лист Мирового Дерева 3
- Лист Мирового Дерева 9
- Лист Мирового Дерева 15
- Мировое Древо Лист 21
- Лист Мирового Дерева 27
- Лист Мирового Древа 42
- Лист Мирового Древа 51
- Лист Мирового Дерева 60
- Лист Мирового Дерева 69
Рыбалка
- Лист Мирового Древа 6
- Лист Мирового Дерева 12
- Лист Мирового Дерева 18
- Лист Мирового Дерева 24
- Лист Мирового Дерева 30
- Лист Мирового Дерева 45
- Лист Мирового Дерева 54
- Лист Мирового Древа 63
- Лист Мирового Дерева 72
Раскопки/Копание
- Лист Мирового Древа №7
- Лист Мирового Древа №13
- Лист Мирового Древа №19
- Лист Мирового Древа №25
Это были все способы собрать различные известные Листья Мирового Дерева в Lost Ark. Вас интересуют предметы и награды, которые вы получаете, когда собираете определенное количество Листьев Мирового Дерева? Что ж, мы вас прикрыли. Вот полный список нужного вам количества листьев Мирового древа и соответствующих наград.
Список наград за листья мирового дерева
Необходимое количество листьев мирового дерева | Награда |
6 | 5x Зелье опыта для всех ремесленных навыков адепта |
12 | Оберег слабости |
18 | Набор для рукоделия знатока |
24 | Шедевр №11 |
30 | Трансформация: Кролик |
36 | Слабый цитрин |
42 | Звание «Мастер жизненных навыков» |
48 | Silent Citrine |
54 | Трансформация: Собираемый |
60 | Item: Escape from the World Tree |
66 | Амулет-плавник |
72 | Сверкающий цитрин |
И это конец того, где можно найти полный список листьев мирового дерева и наград, которые вы можете получить сбор листьев мирового дерева. Мы обязательно обновим это руководство в будущем, если они начнут добавлять больше листьев мирового древа.
Источник