用c语言以数据结构的方式写一段代码:按先序次序建立一棵二叉树,按结点的值递增有序输出二叉树所有叶子结点
时间: 2024-05-02 08:23:17 浏览: 10
以下是用C语言以数据结构的方式实现按先序次序建立一棵二叉树,并按结点的值递增有序输出所有叶子结点的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
TreeNode* createTreeNode(int val) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
void buildTree(TreeNode** root) {
int val;
printf("输入节点值(输入-1结束):");
scanf("%d", &val);
if (val == -1) {
*root = NULL;
return;
}
*root = createTreeNode(val);
buildTree(&((*root)->left));
buildTree(&((*root)->right));
}
void inorderTraversal(TreeNode* root, int* count) {
if (root == NULL) {
return;
}
inorderTraversal(root->left, count);
if (root->left == NULL && root->right == NULL) {
printf("%d ", root->val);
(*count)++;
}
inorderTraversal(root->right, count);
}
int main() {
TreeNode* root = NULL;
buildTree(&root);
printf("按结点的值递增有序输出二叉树所有叶子结点:");
int count = 0;
inorderTraversal(root, &count);
printf("\n叶子结点的个数为:%d", count);
return 0;
}
```
运行程序后,会提示输入节点值来建立二叉树,输入-1表示该节点为空。然后按先序次序建立二叉树,并按结点的值递增有序输出二叉树所有叶子结点。最后输出叶子结点的个数。