2012-03-02 64 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 2012-03-02 12:09:41

+1

是的,但我认为它只是iostream而不是iostream.h – 2012-03-02 12:11:42

+0

如果你要粘贴这样一大堆编译错误的代码,那么至少包含行号也是有帮助的 - 我们应该计算哪里行“115”是? – djd 2012-03-02 12:12:00

回答

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中,我说,对不起 – 2012-03-02 12:25:23

+0

我使用#include 和一切都很清楚,没有错误的代码,但我无法成功构建我的代码,未能构建 – 2012-03-02 12:26:32

+0

实际问题是:我无法构建程序。 – 2012-03-02 14:04:38