数据结构实验9----二叉排序树

   日期:2024-12-30    作者:hubinusb 浏览:60    移动:http://w.yusign.com/mobile/quote/8631.html
好的,我可以帮你解答这个问题。首先,我们来了解一下二叉排序树二叉排序树是一种特殊的二叉树,它的每个节点都满足以下条件: 1. 左子树中的所有节点的值都小于当前节点的值; 2. 右子树中的所有节点的值都大于当前节点的值; 3. 左子树和右子树也都是二叉排序树。 基于这个特性,我们可以在二叉排序树中实现快速的查找、插入和删除操作。 下面是一个基于 C 语言实现的二叉排序树: ```c #include <stdio.h> #include <stdlib.h> // 定义二叉排序树的节点结构体 typedef struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right; } TreeNode; // 查找节点 TreeNode* search(TreeNode* root, int val) { if (root == NULL || root->val == val) { return root; } if (val < root->val) { return search(root->left, val); } else { return search(root->right, val); } } // 插入节点 TreeNode* insert(TreeNode* root, int val) { if (root == NULL) { TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode)); node->val = val; node->left = NULL; node->right = NULL; return node; } if (val < root->val) { root->left = insert(root->left, val); } else if (val > root->val) { root->right = insert(root->right, val); } return root; } // 删除节点 TreeNode* delete(TreeNode* root, int val) { if (root == NULL) { return NULL; } if (val < root->val) { root->left = delete(root->left, val); } else if (val > root->val) { root->right = delete(root->right, val); } else { if (root->left == NULL) { TreeNode* temp = root->right; free(root); return temp; } else if (root->right == NULL) { TreeNode* temp = root->left; free(root); return temp; } TreeNode* temp = root->right; while (temp->left != NULL) { temp = temp->left; } root->val = temp->val; root->right = delete(root->right, temp->val); } return root; } // 打印二叉排序树 void printTree(TreeNode* root) { if (root == NULL) { return; } printf("%d ", root->val); printTree(root->left); printTree(root->right); } int main() { // 初始化二叉排序树 TreeNode* root = NULL; // 插入节点 root = insert(root, 5); root = insert(root, 3); root = insert(root, 7); root = insert(root, 1); root = insert(root, 9); root = insert(root, 2); // 打印二叉排序树 printf("Binary Search Tree: "); printTree(root); // 查找节点 TreeNode* node = search(root, 7); if (node == NULL) { printf(" 7 not found in the tree. "); } else { printf(" 7 found in the tree.
本文地址:http://w.yusign.com/quote/8631.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号