第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

二叉排序樹:實現(xiàn)高效的排序算法

標簽:
Python
二叉排序树

二叉排序树是一种特殊的二叉树,它的每个节点最多只有两个子节点,分别称为左子节点和右子节点。与其他二叉树相比,二叉排序树具有以下特点:

  1. 每个节点都只有一个父节点和两个子节点,且左子节点和右子节点的顺序是固定的。
  2. 根节点(或称为主节点)是具有两个子节点的节点,其余节点都只有一个子节点。

二叉排序树的应用非常广泛,特别是在计算机科学领域。它可以用于文件系统的排序、查找和删除操作,还可以用于构建各种数据结构和算法。

下面给出一个二叉排序树的实例,并介绍如何使用递归实现树的插入、删除和查找操作:

#include <iostream>
using namespace std;

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode() : val(0), left(nullptr), right(nullptr) {}
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    TreeNode(int x, TreeNode *left, TreeNode *right, TreeNode *parent) : val(x), left(left), right(right), parent(parent) {}
};

void printBinaryTree(TreeNode *root) {
    if (root == nullptr) {
        return;
    }
    printBinaryTree(root->left);
    printBinaryTree(root->right);
    cout << root->val << " ";
}

void inorderInsert(TreeNode *root, int key) {
    if (root == nullptr) {
        return;
    }
    if (key < root->val) {
        root->left = inorderInsert(root->left, key);
    } else if (key > root->val) {
        root->right = inorderInsert(root->right, key);
    } else {
        cout << root->val << " ";
    }
}

void preorderInsert(TreeNode *root, int key) {
    if (root == nullptr) {
        return;
    }
    cout << root->val << " ";
    inorderInsert(root->left, key);
    inorderInsert(root->right, key);
}

void searchBinaryTree(TreeNode *root, int key) {
    if (root == nullptr || root->val == key) {
        return;
    }
    searchBinaryTree(root->left, key);
    searchBinaryTree(root->right, key);
    cout << root->val << " ";
}

int main() {
    TreeNode root = new TreeNode(4);
    root->left = new TreeNode(2);
    root->right = new TreeNode(6);
    root->left->left = new TreeNode(1);
    root->left->right = new TreeNode(3);
    root->right->left = new TreeNode(5);
    root->right->right = new TreeNode(7);

    cout << "Inorder insertion: ";
    inorderInsert(root, 1);
    inorderInsert(root, 3);
    inorderInsert(root, 5);
    cout << endl;

    cout << "Preorder insertion: ";
    preorderInsert(root, 2);
    cout << endl;

    cout << "Search for key 4: ";
    searchBinaryTree(root, 4);
    cout << endl;

    return 0;
}

通过这个实例可以了解到二叉排序树的实现方法以及如何使用递归实现树的插入、删除和查找操作。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消