在c ++中分配给变量时出错

时间:2017-02-06 06:42:20

标签: c++ binary-tree

我正在尝试用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,以便我可以打印树吗?

2 个答案:

答案 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);