C++搜索二叉树如何打印值
时间: 2023-06-12 13:04:35 浏览: 110
C语言打印二叉树
3星 · 编辑精心推荐
打印搜索二叉树的值可以使用中序遍历(In-order traversal)算法,该算法会以从小到大的顺序遍历每个节点并打印节点的值。具体实现可以参考以下 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义搜索二叉树节点结构体
struct node {
int value;
struct node *left;
struct node *right;
};
// 中序遍历搜索二叉树并打印节点的值
void in_order_traversal(struct node *root) {
if (root == NULL) {
return;
}
in_order_traversal(root->left);
printf("%d ", root->value);
in_order_traversal(root->right);
}
int main() {
// 构建一个搜索二叉树
struct node *root = (struct node*) malloc(sizeof(struct node));
root->value = 4;
root->left = (struct node*) malloc(sizeof(struct node));
root->left->value = 2;
root->left->left = (struct node*) malloc(sizeof(struct node));
root->left->left->value = 1;
root->left->left->left = NULL;
root->left->left->right = NULL;
root->left->right = (struct node*) malloc(sizeof(struct node));
root->left->right->value = 3;
root->left->right->left = NULL;
root->left->right->right = NULL;
root->right = (struct node*) malloc(sizeof(struct node));
root->right->value = 6;
root->right->left = (struct node*) malloc(sizeof(struct node));
root->right->left->value = 5;
root->right->left->left = NULL;
root->right->left->right = NULL;
root->right->right = (struct node*) malloc(sizeof(struct node));
root->right->right->value = 7;
root->right->right->left = NULL;
root->right->right->right = NULL;
// 打印搜索二叉树的值
in_order_traversal(root);
return 0;
}
```
上述代码中,我们先定义了一个搜索二叉树节点的结构体,包括节点的值、左子节点和右子节点。接着,我们实现了一个中序遍历算法 `in_order_traversal()`,该算法会递归遍历搜索二叉树的左子树、打印当前节点的值、再遍历右子树。最后,在 `main()` 函数中构建一个搜索二叉树,并调用 `in_order_traversal()` 打印搜索二叉树的值。
阅读全文