二叉排序树(BST)是一种特殊的二叉树,它允许快速查找、插入和删除元素。下面是二叉排序树的基本定义和构造方法:
二叉排序树定义
二叉排序树或者是空树,或者是满足以下性质的二叉树:
1. 若左子树非空,则左子树上所有节点的值均小于或等于根节点的值;
2. 若右子树非空,则右子树上所有节点的值均大于或等于根节点的值;
3. 左、右子树本身也分别是一棵二叉排序树。
二叉排序树构造
构造二叉排序树通常采用陆续插入结点的方法:
1. 将待排序的数据序列的第一个数据作为根结点;
2. 对后续数据,逐个插入结点,新数据结点作为叶子结点插入到合适的位置,保持树的结构满足二叉排序树性质。
二叉排序树基本操作
查找:
若二叉排序树非空,将给定值与根结点的值比较,相等则查找成功;
若不等,根据比较结果在左子树或右子树中查找。
代码示例
```c
include include // 定义二叉排序树结点结构体 typedef struct BSTNode { int key; struct BSTNode *left, *right; } BSTNode, *BSTree; // 在二叉排序树中查找值为key的结点 BSTNode *BST_Search(BSTree T, int key) { while (T != NULL && key != T->key) { if (key < T->key) T = T->left; else T = T->right; } return T; } // 插入新元素到二叉排序树中 BSTNode *BST_Insert(BSTree T, int val) { if (T == NULL) { BSTNode *node = (BSTNode *)malloc(sizeof(BSTNode)); node->key = val; node->left = node->right = NULL; return node; } if (val < T->key) T->left = BST_Insert(T->left, val); else if (val > T->key) T->right = BST_Insert(T->right, val); return T; } int main() { BSTree T = NULL; T = BST_Insert(T, 5); T = BST_Insert(T, 3); T = BST_Insert(T, 7); T = BST_Insert(T, 1); T = BST_Insert(T, 9); BSTNode *result = BST_Search(T, 7); if (result != NULL) printf("Found key: %dn", result->key); else printf("Key not foundn"); return 0; } 以上代码展示了如何创建一个二叉排序树,并实现了一个简单的查找功能。您可以根据需要扩展此代码以包含插入、删除等其他操作 本文来自作者[fujianzhongyixueyuan]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/xueli/3464956.html
评论列表(4条)
我是公众科技网的签约作者“fujianzhongyixueyuan”!
希望本篇文章《二叉排序树怎么写的》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:二叉排序树(BST)是一种特殊的二叉树,它允许快速查找、插入和删除元素。下面是二叉排序树的基本定义和构造方法: 二叉排序树定义二叉排序树或者是空树,或者是满足以下性质的二叉树:1. 若左子树非空,则左子树上所有节点的值均小于或等于根节点的值