要求按照先序遍历的顺序输出给定二叉树的叶结点。用C++进行代码分析
时间: 2024-06-11 16:10:37 浏览: 170
分析:
先序遍历即先访问根节点,然后遍历左子树,最后遍历右子树。对于输出叶节点的要求,可以在访问叶节点时输出。
具体实现:
1. 定义二叉树节点结构体,包括左子节点指针、右子节点指针和节点值。
2. 定义先序遍历函数,遍历到叶节点时输出。
3. 在主函数中创建二叉树,并调用先序遍历函数。
代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 先序遍历函数
void preorder(struct TreeNode *root) {
if (root) {
if (!root->left && !root->right) {
printf("%d ", root->val);
}
preorder(root->left);
preorder(root->right);
}
}
int main() {
// 创建二叉树
struct TreeNode *root = (struct TreeNode *)malloc(sizeof(struct TreeNode));
root->val = 1;
root->left = (struct TreeNode *)malloc(sizeof(struct TreeNode));
root->left->val = 2;
root->left->left = NULL;
root->left->right = NULL;
root->right = (struct TreeNode *)malloc(sizeof(struct TreeNode));
root->right->val = 3;
root->right->left = (struct TreeNode *)malloc(sizeof(struct TreeNode));
root->right->left->val = 4;
root->right->left->left = NULL;
root->right->left->right = NULL;
root->right->right = (struct TreeNode *)malloc(sizeof(struct TreeNode));
root->right->right->val = 5;
root->right->right->left = NULL;
root->right->right->right = NULL;
// 先序遍历输出叶节点
preorder(root);
return 0;
}
```
输出结果为:2 4 5。
阅读全文