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

Обход бинарного дерева - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввести два числа типо unsighed short,распечатать число,которое содержит в младшем байте большее значение http://www.cyberforum.ru/cpp-beginners/thread245498.html
Ввести два числа типо unsighed short,распечатать число,которое содержит в младшем байте большее значение
C++ visual C++ 7.0 Всем привет! Дайте пожалуйста ссылку на скачивание visual C++ 7.0 ? http://www.cyberforum.ru/cpp-beginners/thread245492.html
Параметры по умолчанию в С. C++
Всем привет! Захотел воспользоватся параметрами по умолчанию в си-шном проекте. И получил следующие ошибки: 1>..\project\project.c(45) : error C2143: syntax error : missing ')' before '=' 1>..\project\project.c(45) : error C2072: 'myfunc' : initialization of a function 1>..\project\project.c(45) : error C2059: syntax error : ')' Действительно данный функционал я могу использовать только в...
C++ Внутpеннее устpойство шаблона Iterator<T>
Dобpого вpемени суток . Jотелось бы понять кaк устpоен мехaнизм итеpaтоpов типa STL изнутpи . исходя из способa объявления : Vector<int>::Iterator p ; //нaпpимеp пpихожу к выводу , что итеpaтоp этот является членом контейнеpного клaссa , с типом дaнных по умолчaнию . если б пеpедо мной встaлa зaдaчa это pеaлизовaть , непpемменно сделaл бы вот тaк :
C++ Вывести на экран товар, если цена за его единицу товара 10 тысяч и он лежит больше месяца http://www.cyberforum.ru/cpp-beginners/thread245469.html
Дана задача с которой у меня возникли проблемы в решении: При помощи структур ввести 5 видов товара: 1 столбец Наименование товара 2 столбец Количество 3 столбец Цена за единицу товара 4 столбец Дата изготовления(Делится на ДЕНЬ МЕСЯЦ ГОД). Задание:если цена за единицу товара больше 10000 тысяч и товар лежит больше месяца(даты можно вводить любые,но считать относительно сегодняшнего...
C++ массивы, выход из заполнения смысл простой, вводятся числа в двумерный массив, как закончить ввод, условие? интересует: с помощью ограничения длинны массива с помощью какой либо функции(команды) с помощью определенного знакового - буквенного символа. подскажите, лучше с небольшим фрагментом кода. подробнее

Показать сообщение отдельно
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
20.02.2011, 17:34  [ТС]     Обход бинарного дерева
silent_1991, Хотя бы первую, прошу...

Добавлено через 3 минуты
silent_1991, я тут нашел обходы, только дерево написать немогу...
C++
1
2
3
4
5
6
7
8
inorder(TreeNode* currentNode)
{
    if (currentNode) {
       inorder(currentNode->LeftChild);
       cout << currentNode->data;
       inorder(currentNode->RightChild);
    }
}
C++
1
2
3
4
5
6
7
8
preorder(TreeNode* currentNode)
{
    if (currentNode) {
        cout << currentNode->data;
        preorder(currentNode->LeftChild);
        preorder(currentNode->RightChild);
    }
}
C++
1
2
3
4
5
6
7
8
postorder(TreeNode* currentNode)
{
    if (currentNode) {
        postorder(currentNode->LeftChild);
        postorder(currentNode->RightChild);
        cout << currentNode->data;
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
LevelOrder(TreeNode* root)
{
   Queue q<TreeNode*>;
   TreeNode* currentNode = root;
 
    while (currentNode) {
        cout << currentNode->data;
        if (currentNode->LeftChild) q.Add(currentNode->LeftChild);
        if (currentNode->RightChild) q.Add(currentNode->RightChild);
        currentNode = q.Delete(); //q.Delete returns a node pointer
    }
}
Добавлено через 2 минуты
silent_1991, или вот тут правильно???
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
#include<stdio.h>
#include<conio.h>
struct node
{
int data;
struct node *right, *left;
}*root,*p,*q;
 
struct node *make(int y)
{
struct node *newnode;
newnode=(struct node *)malloc(sizeof(struct node));
newnode->data=y;
newnode->right=newnode->left=NULL;
return(newnode);
}
 
void left(struct node *r,int x)
{
if(r->left!=NULL)
printf("\n Invalid !");
else
r->left=make(x);
}
 
void right(struct node *r,int x)
{
if(r->right!=NULL)
printf("\n Invalid !");
else
r->right=make(x);
}
 
void inorder(struct node *r)
{
if(r!=NULL)
{
inorder(r->left);
printf("\t %d",r->data);
inorder(r->right);
}
}
 
void preorder(struct node *r)
{
if(r!=NULL)
{
printf("\t %d",r->data);
preorder(r->left);
preorder(r->right);
}
}
 
void postorder(struct node *r)
{
if(r!=NULL)
{
postorder(r->left);
postorder(r->right);
printf("\t %d",r->data);
}
}
 
void main()
{
int no;
int choice;
clrscr();
printf("\n Enter the root:");
scanf("%d",& no);
root=make(no);
p=root;
while(1)
{
printf("\n Enter another number:");
scanf("%d",& no);
if(no==-1)
break;
p=root;
q=root;
while(no!=p->data && q!=NULL)
{
p=q;
if(no<p->data)
q=p->left;
else
q=p->right;
}
if(no<p->data)
{
printf("\n Left branch of %d is %d",p->data,no);
left(p,no);
}
else
{
right(p,no);
printf("\n Right Branch of %d is %d",p->data,no);
}
}
while(1)
{
printf("\n 1.Inorder Traversal \n 2.Preorder Traversal \n 3.Postorder Traversal \n 4.Exit");
printf("\n Enter choice:");
scanf("%d",&choice);
switch(choice)
{
case 1 :inorder(root);
break;
case 2 :preorder(root);
break;
case 3 :postorder(root);
break;
case 4 :exit(0);
default:printf("Error ! Invalid Choice ");
break;
}
getch();
}
 
}
 
Текущее время: 02:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru