C++实现二叉排序树
时间: 2023-10-20 07:36:43 浏览: 97
二叉排序树(Binary Search Tree)是一种特殊的二叉树,它满足以下性质:
1. 左子树上所有节点的值都小于根节点的值
2. 右子树上所有节点的值都大于根节点的值
3. 左子树和右子树也都是二叉排序树
下面是用 C 语言实现的二叉排序树的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉排序树结构定义
struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
};
// 创建新节点
struct TreeNode* createNode(int val) {
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点
struct TreeNode* insertNode(struct TreeNode* root, int val) {
if (root == NULL) {
return createNode(val);
}
if (val < root->val) {
root->left = insertNode(root->left, val);
} else if (val > root->val) {
root->right = insertNode(root->right, val);
}
return root;
}
// 中序遍历二叉排序树
void inorderTraversal(struct TreeNode* root) {
if (root != NULL) {
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
}
int main() {
struct TreeNode* root = NULL;
// 插入节点
root = insertNode(root, 5);
root = insertNode(root, 3);
root = insertNode(root, 7);
root = insertNode(root, 2);
root = insertNode(root,4);
// 中序遍历二叉排序树
inorderTraversal(root);
return 0;
}
```
运行上述代码会输出中序遍历的结果:2 3 4 5 7,即二叉排序树中节点值的有序序列。你可以根据需要插入更多的节点,或者在插入节点之后执行其他操作。
阅读全文