创建二叉树,求二叉树的叶子节点,求二叉树的深度c语言
时间: 2023-12-10 10:33:30 浏览: 45
以下是C语言中创建二叉树、求二叉树叶子节点和深度的示例代码:
1. 创建二叉树
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建二叉树
TreeNode* createTree() {
int data;
scanf("%d", &data);
if (data == -1) { // -1表示该节点为空
return NULL;
}
TreeNode *node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = data;
node->left = createTree();
node->right = createTree();
return node;
}
```
2. 求二叉树叶子节点
```c
// 求二叉树叶子节点
int getLeafCount(TreeNode* root) {
if (root == NULL) {
return 0;
}
if (root->left == NULL && root->right == NULL) {
return 1;
}
return getLeafCount(root->left) + getLeafCount(root->right);
}
```
3. 求二叉树深度
```c
// 求二叉树深度
int getDepth(TreeNode* root) {
if (root == NULL) {
return 0;
}
int leftDepth = getDepth(root->left);
int rightDepth = getDepth(root->right);
return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;
}
```