用C++代码写一个二叉树的建立
时间: 2023-09-25 16:06:38 浏览: 136
C++实现二叉树
### 回答1:
好的,这是一个二叉树的建立的 C 代码示例:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
TreeNode* createTree(int data, TreeNode *left, TreeNode *right) {
TreeNode *new_node = (TreeNode*) malloc(sizeof(TreeNode));
new_node->data = data;
new_node->left = left;
new_node->right = right;
return new_node;
}
int main() {
// 创建叶子节点
TreeNode *leaf1 = createTree(1, NULL, NULL);
TreeNode *leaf2 = createTree(2, NULL, NULL);
TreeNode *leaf3 = createTree(3, NULL, NULL);
TreeNode *leaf4 = createTree(4, NULL, NULL);
TreeNode *leaf5 = createTree(5, NULL, NULL);
TreeNode *leaf6 = createTree(6, NULL, NULL);
TreeNode *leaf7 = createTree(7, NULL, NULL);
// 创建二叉树
TreeNode *root = createTree(0,
createTree(1, leaf1, leaf2),
createTree(2,
createTree(3, leaf3, leaf4),
createTree(4, leaf5, leaf6)));
}
```
在这个代码中,我们定义了一个名为 `TreeNode` 的结构体,表示一个二叉树的节点。每个节点都有一个数据域和两个指针域,分别指向它的左儿子和右儿子。
我们还定义了一个名为 `createTree` 的函数,用于创建一个新的二叉树节点。在 `main` 函数中,我们创建了七个叶子节点,然后使用这些叶子节点和 `createTree` 函数创建了一棵二叉树。
这仅仅是一个简单的二叉树建立的例子,你可以根据自己的需要进行
### 回答2:
二叉树是一种常见的数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。在C语言中,可以通过定义一个结构体来表示二叉树的节点,然后使用递归的方式来建立这个二叉树。
首先,我们需要定义一个结构体来表示二叉树的节点,包含一个数据项和两个指向左右子节点的指针。代码如下:
```c
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
接下来,我们可以编写一个递归的函数来建立二叉树。在每个递归函数中,我们首先创建一个新的节点,并读入一个整数作为节点的数据项。然后,我们递归地调用自己来建立左右子树,并将返回的节点赋值给当前节点的左右指针。最后,我们返回当前节点。代码如下:
```c
TreeNode* createBinaryTree() {
int data;
scanf("%d", &data);
if (data == -1) { // 当输入-1时表示该节点为空
return NULL;
}
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->data = data;
newNode->left = createBinaryTree();
newNode->right = createBinaryTree();
return newNode;
}
```
在主函数中,我们可以调用这个函数来建立二叉树,并将返回的根节点赋值给一个指针变量。代码如下:
```c
int main() {
TreeNode* root = createBinaryTree();
// 其他操作...
return 0;
}
```
以上就是用C语言代码进行二叉树建立的方法。当然,在实际应用中,可能还会涉及到其他操作,比如遍历、查找等,但是建立二叉树的基本思路是类似的。
### 回答3:
二叉树是一种常用的数据结构,在C语言中可以用代码来实现二叉树的建立。下面是一个简单的示例代码:
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树的结点结构
typedef struct node {
int data; // 数据域
struct node* left; // 左子树指针
struct node* right; // 右子树指针
} Node;
// 创建新结点
Node* createNode(int data) {
Node* newNode = malloc(sizeof(Node));
if (newNode == NULL) {
printf("内存分配失败\n");
exit(1);
}
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入结点
Node* insertNode(Node* root, int data) {
if (root == NULL) {
root = createNode(data);
return root;
}
if (data < root->data) {
root->left = insertNode(root->left, data);
} else if (data > root->data) {
root->right = insertNode(root->right, data);
}
return root;
}
// 前序遍历二叉树
void preorder(Node* root) {
if (root != NULL) {
printf("%d ", root->data);
preorder(root->left);
preorder(root->right);
}
}
int main() {
Node* root = NULL; // 根结点初始化为空
int num;
printf("输入要插入的结点数据(输入-1结束):");
while (scanf("%d", &num) && num != -1) {
root = insertNode(root, num);
}
printf("前序遍历结果为:");
preorder(root);
printf("\n");
return 0;
}
在这个示例代码中,我们首先定义了一个二叉树的结点结构,包括一个数据域和左右子树指针。然后定义了两个函数,createNode用于创建新的结点,insertNode用于插入结点到二叉树中。
在主函数中,我们首先初始化根结点为空。然后在输入数据的过程中,通过调用insertNode函数将数据插入到二叉树中。输入-1表示结束。
最后,我们通过前序遍历二叉树的方式,打印出结果。前序遍历的顺序是:根节点->左子树->右子树。
这是一个简单的二叉树建立的示例代码,可以根据具体需求进行修改和扩展。
阅读全文