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

时间:2017-07-02 09:23:18

标签: c++ c++11 recursion

我应该以递归方式输入二叉树:

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;
}

1 个答案:

答案 0 :(得分:1)

将输入作为inorder树遍历...

  1. 首先获取根节点的输入。
  2. 如果存在则输入左子树。
  3. 如果存在,则输入右子树。
  4. 代码:

    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;
    }