c语言求二叉排序树深度
时间: 2023-08-03 21:09:49 浏览: 102
要求一个二叉排序树的深度,可以通过递归的方式实现。二叉排序树(BST)的深度等于左子树深度和右子树深度中的较大值再加 1。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node* left;
struct node* right;
} Node;
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
Node* insert(Node* root, int data) {
if (root == NULL) {
root = createNode(data);
} else if (data <= root->data) {
root->left = insert(root->left, data);
} else {
root->right = insert(root->right, data);
}
return root;
}
int maxDepth(Node* root) {
if (root == NULL) {
return 0;
} else {
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return (leftDepth > rightDepth) ? leftDepth + 1 : rightDepth + 1;
}
}
int main() {
Node* root = NULL;
root = insert(root, 5);
insert(root, 3);
insert(root, 7);
insert(root, 1);
insert(root, 9);
insert(root, 4);
insert(root, 6);
printf("The depth of the binary search tree is: %d\n", maxDepth(root));
return 0;
}
```
在这个示例中,我们首先定义了一个 `Node` 结构体来表示二叉排序树的节点,然后定义了 `createNode` 函数来创建一个新的节点,定义了 `insert` 函数来向二叉排序树中插入一个新的节点。
最后,我们使用 `maxDepth` 函数来计算二叉排序树的深度。如果节点为空,返回 0;否则,递归计算左子树和右子树的深度,然后返回左子树深度和右子树深度中的较大值再加 1。
以上代码可以输出以下结果:
```
The depth of the binary search tree is: 4
```
阅读全文