我应该以递归方式输入二叉树:
10 true 20 true 40 false false true 50 false false true 30 true 60 false false true 73 false false
所以创建的树应该是: -
10
20 30
40 50 60 73
我创建了一个无法创建这个树的函数,代码中有什么错误吗?
node* takeInput() {
int data;
string a;
cin>>data>>a;
node*n = NULL;
if(a=="true") {
n = new node(data);
n->left = takeInput();
n->right = takeInput();
}
if(a=="false") {
return NULL;
}
return n;
}
答案 0 :(得分:1)
将输入作为inorder树遍历...
代码:
void takeInput(Node* &node) {
string left, right;
int data;
cin >> data; // input for root node
node = new Node(data);
cin >> left;
if(left == "true") {
takeInput(node->left); // taking input for left subtree
}
cin >> right;
if(right == "true") {
takeInput(node->right); // taking input for right subtree
}
}
Node* InputBinaryTree() {
Node *root;
takeInput(root);
return root;
}