亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++中樹節點的插入與刪除操作

c++
小樊
85
2024-08-24 03:23:30
欄目: 編程語言

在C++中,可以通過定義一個樹節點結構體來表示樹節點,并編寫插入和刪除操作的函數來實現對樹節點的操作。以下是一個簡單的示例:

#include <iostream>

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;

    TreeNode(int v) : val(v), left(nullptr), right(nullptr) {}
};

void insert(TreeNode* root, int val) {
    if (root == nullptr) {
        root = new TreeNode(val);
    } else if (val < root->val) {
        if (root->left == nullptr) {
            root->left = new TreeNode(val);
        } else {
            insert(root->left, val);
        }
    } else {
        if (root->right == nullptr) {
            root->right = new TreeNode(val);
        } else {
            insert(root->right, val);
        }
    }
}

void remove(TreeNode* root, int val) {
    if (root == nullptr) {
        return;
    }
    if (val < root->val) {
        remove(root->left, val);
    } else if (val > root->val) {
        remove(root->right, val);
    } else {
        if (root->left == nullptr) {
            TreeNode* temp = root->right;
            delete root;
            root = temp;
        } else if (root->right == nullptr) {
            TreeNode* temp = root->left;
            delete root;
            root = temp;
        } else {
            TreeNode* minNode = root->right;
            while (minNode->left != nullptr) {
                minNode = minNode->left;
            }
            root->val = minNode->val;
            remove(root->right, minNode->val);
        }
    }
}

int main() {
    TreeNode* root = new TreeNode(5);
    insert(root, 3);
    insert(root, 7);
    insert(root, 2);
    insert(root, 4);
    insert(root, 6);
    insert(root, 8);

    remove(root, 3);

    // 輸出樹的節點值
    std::cout << root->val << " " << root->left->val << " " << root->right->val << std::endl;

    return 0;
}

在上面的示例中,定義了一個TreeNode結構體來表示樹節點,然后實現了插入和刪除操作的函數insertremove。在main函數中創建了一個根節點,并依次插入一些節點值,然后刪除一個節點值,并輸出樹的節點值。

0
隆安县| 定远县| 恭城| 资阳市| 客服| 祥云县| 邵阳市| 临夏县| 红原县| 富锦市| 巴林右旗| 惠州市| 石嘴山市| 彭阳县| 星子县| 晋州市| 玉田县| 海门市| 元江| 南涧| 嘉定区| 文水县| 鲁甸县| 石首市| 眉山市| 彭泽县| 达尔| 旬邑县| 长阳| 敖汉旗| 博野县| 韶山市| 炎陵县| 龙江县| 大英县| 类乌齐县| 隆德县| 土默特右旗| 开化县| 广汉市| 安国市|