說明:本文參考網友的實現,如有版權問題,請聯繫我。本文代碼在vs2019下運行通過,不過,測試用例測試很完整。
struct BinaryTreeNode {
public:
BinaryTreeNode(int value) {
value_ = value;
left_ = nullptr;
right_ = nullptr;
}
int value_;
BinaryTreeNode* left_;
BinaryTreeNode* right_;
};
BinaryTreeNode* create_tree() {
int a_number;
vector<int> input_array;
while (cin >> a_number)
input_array.push_back(a_number);
BinaryTreeNode* root = nullptr;
for (size_t i = 0; i < input_array.size(); i++) {
int value = input_array[i];
BinaryTreeNode *new_node = new BinaryTreeNode(input_array[i]);
if (nullptr == root) {
root = new_node;
}else{
BinaryTreeNode* p = root;
while (true) {
if (value < p->value_) {
if (nullptr == p->left_) {
p->left_ = new_node;
break;
}
else {
p = p->left_;
}
}
else {
if (nullptr == p->right_) {
p->right_ = new_node;
break;
}
else {
p = p->right_;
}
}
}
}
}
return root;
}
int main(){
BinaryTreeNode* root = create_tree();
return 0;
}