我正在尝试用c ++创建二叉树。这是树
3 / \ 2 5
我只想手动创建此树以测试此树上的某些算法。下面是我的相同的代码,但我得到这个错误。为什么会这样?
binary_tree.cpp:19:21: error: expected type-specifier before ‘node’
root->right = new node(5);
#include<iostream>
using namespace std;
class Node {
public:
int data;
Node* left;
Node* right;
Node(int data){
this->data = data;
}
};
int main(){
Node *root = new Node(3); //creates a node called root and initialises its data field to 3
root->left = new node(2); //to the var left inside root to a new instance of Node ??
root->right = new node(5);
return 0;
}
编辑:谢谢大家的宝贵回应。如果我想代表这棵树:
3 / \ 2 5 / \ 1 4
我做了这些改变:
Node *root = new Node(3);
root->left = new Node(2);
root->right = new Node(5);
root->left->left = new Node(1);
root->left->right= new Node(4);
是对的吗?我的意思是我必须将叶子节点的左右分别设置为null,以便我可以打印树吗?
答案 0 :(得分:1)
C ++ 案例敏感。您必须完全按照声明的方式使用标识符。 &#34;节点&#34;与&#34; Node&#34;。
不同另外,二叉树中的叶终止应该有一些指定。在您的情况下,将NULL
分配给叶子终止的子节点似乎是合理的。
您可以在NULL
中分配Node::Node(int)
来自动执行此操作。从......改变您的代码
Node(int data) {
this->data = data;
};
...到......
Node(int data) {
this->data = data;
this->left = NULL;
this->right = NULL;
};
之后,您知道默认情况下所有新创建的节点都已终止,并且迭代(对于打印等内容)只要您检查的孩子是NULL
就不会成为问题。
答案 1 :(得分:0)
它应该是大写N,
root->left = new Node(2);
root->right = new Node(5);