二叉樹系列-1-創建樹

說明:本文參考網友的實現,如有版權問題,請聯繫我。本文代碼在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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章