判断二叉排序树c语言
时间: 2023-12-08 20:37:14 浏览: 100
判断排序二叉树(C语言)
以下是判断二叉排序树的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 中序遍历二叉树
void inorder(TreeNode *root, int *prev, int *flag) {
if (!root) {
return;
}
inorder(root->left, prev, flag);
if (root->val < *prev) {
*flag = 0;
return;
}
*prev = root->val;
inorder(root->right, prev, flag);
}
// 判断是否为二叉排序树
int isValidBST(TreeNode* root) {
int prev = -2147483648; // int类型的最小值
int flag = 1;
inorder(root, &prev, &flag);
return flag;
}
// 创建二叉树
TreeNode* createTree(int val) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
int main() {
// 创建二叉树
TreeNode* root = createTree(5);
root->left = createTree(1);
root->right = createTree(4);
root->right->left = createTree(3);
root->right->right = createTree(6);
// 判断是否为二叉排序树
int flag = isValidBST(root);
if (flag) {
printf("是二叉排序树\n");
} else {
printf("不是二叉排序树\n");
}
return 0;
}
```
阅读全文