用c++完成二叉树的赋值
时间: 2023-06-02 17:07:00 浏览: 134
好的,关于二叉树的赋值,可以参考以下 C 语言代码实现:
```
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
struct TreeNode* createNode(int val) {
struct TreeNode *node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
void insertNode(struct TreeNode *root, int val) {
if (!root) {
return;
}
if (val <= root->val) {
if (!root->left) {
root->left = createNode(val);
} else {
insertNode(root->left, val);
}
} else {
if (!root->right) {
root->right = createNode(val);
} else {
insertNode(root->right, val);
}
}
}
struct TreeNode* buildTree(int *array, int size) {
if (!array || size <= 0) {
return NULL;
}
struct TreeNode *root = createNode(array[0]);
int i;
for (i = 1; i < size; i++) {
insertNode(root, array[i]);
}
return root;
}
void printPreorder(struct TreeNode *root) {
if (!root) {
return;
}
printf("%d ", root->val);
printPreorder(root->left);
printPreorder(root->right);
}
int main() {
int array[] = {5, 3, 8, 2, 4, 7, 9};
int size = sizeof(array) / sizeof(int);
struct TreeNode *root = buildTree(array, size);
printf("Preorder traversal of binary tree is: ");
printPreorder(root);
printf("\n");
return 0;
}
```
这段代码中,我们首先定义了一个二叉树结构体 `TreeNode`,包括 `val` 表示节点的值,`left` 和 `right` 分别表示左右子树。我们使用 `createNode()` 函数创建一个新节点,使用 `insertNode()` 函数将新的节点插入到二叉树中。最后,我们使用 `buildTree()` 函数从一个数组中构建一棵二叉树。最后,我们使用 `printPreorder()` 函数进行前序遍历,输出二叉树的赋值结果。
当然,这只是一个简单的示例,实际情况可能更复杂。希望您能根据自己的实际需求,进行相应的实现。
阅读全文