C++ 以二叉树作为输入(递归)

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真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") {
        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;
    }