C++ 以二叉树作为输入(递归)
我应该递归地接受二叉树的输入,如下所示: 10真20真40假假假真50假假真30真60假假真73假假 因此,创建的树应该是:-C++ 以二叉树作为输入(递归),c++,c++11,recursion,C++,C++11,Recursion,我应该递归地接受二叉树的输入,如下所示: 10真20真40假假假真50假假真30真60假假真73假假 因此,创建的树应该是:- 10 20 30 40 50 60 73 我创建了一个无法创建此树的函数,代码中有什么错误 node* takeInput() { int data; string a; cin>>data>>a; node*n = NULL; if(a=="true"
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;
}
将输入作为顺序树遍历
解释你的输入@RajeevSingh如果一个节点有lchild或rchild,那么它的“true”或者“false”。@RajeevSingh所以例如“40 false false”意味着它没有leftchild和rightchild。“30 true 60 false false true 73 false false”表示30有左子树60,60没有子树(60 false false),30有右子树也有“true 73”,其中73没有子树(73 false false)。树被创建为-当前节点->然后生成左子树->然后生成右子树。基于上述模式的递归函数可以用来生成树。@GAURANGVYAS是的。所以代码有什么问题?
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;
}