C语言生成代码二叉树建立、中序遍历、叶子结点及深度并实现
时间: 2023-07-10 20:10:38 浏览: 94
二叉树的创建与遍历,C语言实现
好的,下面是C语言实现二叉树建立、中序遍历、叶子结点及深度的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 创建二叉树
struct TreeNode* createTree() {
struct TreeNode* root = NULL;
int val;
scanf("%d", &val);
if (val != -1) {
root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = val;
root->left = createTree();
root->right = createTree();
}
return root;
}
// 中序遍历
void inorderTraversal(struct TreeNode* root) {
if (root == NULL) return;
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
// 叶子节点个数
int leafNodeCount(struct TreeNode* root) {
if (root == NULL) return 0;
if (root->left == NULL && root->right == NULL) return 1;
return leafNodeCount(root->left) + leafNodeCount(root->right);
}
// 二叉树深度
int treeDepth(struct TreeNode* root) {
if (root == NULL) return 0;
int leftDepth = treeDepth(root->left);
int rightDepth = treeDepth(root->right);
return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}
int main() {
struct TreeNode* root = createTree();
printf("中序遍历结果:");
inorderTraversal(root);
printf("\n");
printf("叶子节点个数:%d\n", leafNodeCount(root));
printf("二叉树深度:%d\n", treeDepth(root));
return 0;
}
```
输入格式:每个节点的值,-1表示该节点为空。
输出格式:中序遍历结果,叶子节点个数,二叉树深度。
例如,输入:1 2 -1 -1 3 4 -1 -1 5 -1 -1
输出:
中序遍历结果:2 1 4 3 5
叶子节点个数:3
二叉树深度:3
阅读全文