以二叉树为输入(递归)

Taking binary tree as input(recursively)

本文关键字:递归 输入 二叉树      更新时间:2023-10-16

我应该递归地将二叉树的输入作为:

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

将输入作为无序树遍历...

  1. 首先获取根节点的输入。
  2. 然后输入左侧子树(如果存在(。
  3. 然后输入右子树(如果存在(。

法典:

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