2012-03-02 4 views
-1

i solved the solution by myself, please check it my code 'friends'.бинарное дерево обхода в C++

i have done a few changes in my code.

check my program, i got the output when i debug the code in netbeans IDE of my laptop...

the changes are done in my function calls and i build my constructor.

#include <iostream> 
1.#include <cstdlib> 
2.#include <stdio.h> 
3 
4.using namespace std; 
5 
6.class binaryTreeTraversal 
7.{ 
8.public: 
9.int TreeNodes[2^5]; 
10.int size; 
    int number; 
    int depth; 
11.binaryTreeTraversal(void); 
12.bool LeafNode(int node); 
13.int RootNode(int node); 
14.int LeftPtr(int node); 
15.int RightPtr(int node); 
16. 
17.int length(); 
18.int preOrderTraversal(int); 
19.int inOrderTraversal(int); 
20.int postOrderTraversal(int); 
21.}; 

//build the constructor 
binaryTreeTraversal::binaryTreeTraversal():size(sizeof(TreeNodes)/sizeof(int)),number(0),depth(0) 
{ 
for(int i = 0; i < size; ++i) 
{ 
    TreeNodes[i] = -1; 
} 
} 
22.bool binaryTreeTraversal::LeafNode(int node) 
23.{ 
24.return LeftPtr(node) == -1 && RightPtr(node) == -1; 
25.} 
26.int binaryTreeTraversal::RootNode(int node) 
27.{ 

29.root = (node-1)/2; 

34.return (root >= size || TreeNodes[root] == -1)? -1 : root; 
35.} 
36.int binaryTreeTraversal::LeftPtr(int node) 
37.{ 

39.left = (node-1)*2-1; 

44.return (root >= size || TreeNodes[root] == -1)? -1 : root; 
45.} 
46.int binaryTreeTraversal::RightPtr(int node) 
47.{ 

49.right = (node-1)*2; 

54.return (root >= size || TreeNodes[root] == -1)? -1 : root; 
55.} 
56.int binaryTreeTraversal::preOrderTraversal(int node) 
57.{ 
58.if(node == -1) 
59.{ 
60. return (-1); 
61. cout<<"The Tree Nodes are:"<<node<<" = "<<TreeNodes[node]<<' '; 
63.} 
64.preOrderTraversal(LeftPtr(node)); 
65.preOrderTraversal(RightPtr(node)); 
66.} 
67.int binaryTreeTraversal::inOrderTraversal(int node) 
68.{ 
69.if(node == -1) 
70.{ 
71. return (-1); 
72. inOrderTraversal(LeftPtr(node)); 
73.} 
74.cout<<"The Tree Nodes are:"<<node<<" = "<<TreeNodes[node]<<' '; 
75.inOrderTraversal(RightPtr(node)); 
76.} 
77.int binaryTreeTraversal::postOrderTraversal(int node) 
78.{ 
79.if(node == -1) 
80.{ 
81. return (-1); 
82. postOrderTraversal(LeftPtr(node)); 
83.} 
84.postOrderTraversal(RightPtr(node)); 
85.cout<<"The Tree Nodes are:"<<node<<" = "<<TreeNodes[node]<<' '; 
86.} 
87.int binaryTreeTraversal::length() 
88.{ 
89.return depth; 
90.} 
91.int main(int argc, char** argv) 
92.{ 
93.binaryTreeTraversal btt; 
94.btt.size = 13; 
95.btt.TreeNodes[0] = 27; 
96.btt.TreeNodes[1] = 12; 
97.btt.TreeNodes[2] = 3; 
98.btt.TreeNodes[3] = 8; 
99.btt.TreeNodes[4] = 43; 
100.btt.TreeNodes[5] = 9; 
101.btt.TreeNodes[6] = 7; 
102.btt.TreeNodes[7] = 61; 
103.btt.TreeNodes[8] = 38; 
104.btt.TreeNodes[9] = 65; 
105.btt.TreeNodes[10] = 99; 
106.btt.TreeNodes[11] = 77; 
107.btt.TreeNodes[12] = 22; 
108.cout<<"The Left-ChildNode of 9 is: \n\n"<<btt.LeftPtr(9)<<' '; 
109.cout<<"The node 12 is LeafNode: \n\n"<<btt.LeafNode(12)<<' '; 
110.cout<<"The node 6 is LeafNode: \n\n"<<btt.LeafNode(6)<<' '; 
111.cout<<"The RootNode of 10 is: \n\n"<<btt.RootNode(10)<<' '; 
112.cout<<"The preOrderTraversal values are: \n\n"<<btt.preOrderTraversal(0)<<' '; 
113.cout<<"The inOrderTraversal values are: \n\n"<<btt.inOrderTraversal(0)<<' '; 
114.cout<<"The postOrderTraversal values are: \n\n"<<btt.postOrderTraversal(0)<<' '; 
115.return (0); 
116.} 
+0

'#include '. 'stdio' не предоставляет' cin' и 'cout'. Компилятор сказал вам, что не может найти 'cout' ... мгновенный взгляд на документацию для того же должен сказать вам, какие заголовки объявляют об этом. – zmccord

+1

да, но я думаю, что его просто iostream не iostream.h –

+0

Если вы собираетесь вставить такой огромный кусок кода с ошибками компилятора, было бы полезно, по крайней мере, включить номера строк - мы должны считать, где строка «115» есть? – djd

ответ

1

Я не уверен, что отчет линия 31 о, но когда я скомпилировать код, сообщается об ошибке в строке 24, которая является недействительным. Строка 24 является:

return (binaryTreeTraversal::LeftPtr(int node) == NULL && binaryTreeTraversal::RightPtr(int node) == NULL); 

, и я подозреваю, что вы имеете в виду, чтобы это было:

return (binaryTreeTraversal::LeftPtr(node) == 0 && binaryTreeTraversal::RightPtr(node) == 0); 

Строка 61 ошибка в том, что вы включили stdio.h вместо iostream

Вы титулованный свой вопрос «бинарное дерево обхода в c» ... действительно ли вы верите, что ваш вопрос имеет какое-то отношение к этому?

+0

да, вы «Правильно, это была строка 24 здесь, но это было в моей netbeans IDE, что я сказал, извините –

+0

Я использовал #include и все понятно, без ошибок, но я не могу успешно скомпоновать свой код, его не удалось построить –

+0

актуальной проблемой является: я не могу построить программу. –

Смежные вопросы