用前序遍历方法创建一棵二叉树,编写算法,输出二叉树的三种遍历序列。c++
时间: 2024-05-09 11:14:52 浏览: 85
好的,我会帮您解答这个问题。
首先,让我们了解一下二叉树的前序遍历。
二叉树的前序遍历是指先访问根节点,然后按照左子树、右子树的顺序递归遍历子树。
接下来,我们可以按照前序遍历的方式创建一棵二叉树,并输出它的三种遍历序列。
下面是 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建二叉树
TreeNode* createTree() {
TreeNode* node = NULL;
int val;
scanf("%d", &val);
if (val != -1) {
node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = createTree();
node->right = createTree();
}
return node;
}
// 前序遍历
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
// 中序遍历
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
// 后序遍历
void postorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val);
}
int main() {
TreeNode* root = createTree();
printf("前序遍历结果:");
preorderTraversal(root);
printf("\n");
printf("中序遍历结果:");
inorderTraversal(root);
printf("\n");
printf("后序遍历结果:");
postorderTraversal(root);
printf("\n");
return 0;
}
```
在这个代码中,我们使用了递归的方式创建了一棵二叉树,并分别输出了它的前序遍历、中序遍历和后序遍历的结果。
注意,在输入数据时,我们用 -1 表示该节点为空。
希望这个回答能够解决您的问题!
阅读全文