如何创建一个二叉树代码C语言示范
时间: 2023-06-09 19:07:57 浏览: 46
以下是一个简单的二叉树的 C 语言示范代码:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int val;
struct Node* left;
struct Node* right;
} Node;
Node* createNode(int val) {
Node* newNode = (Node*) malloc(sizeof(Node));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
Node* insertNode(Node* root, int val) {
if(root == NULL) {
root = createNode(val);
} else if(val <= root->val) {
root->left = insertNode(root->left, val);
} else {
root->right = insertNode(root->right, val);
}
return root;
}
void printInOrder(Node* root) {
if (root == NULL) {
return;
}
printInOrder(root->left);
printf("%d ", root->val);
printInOrder(root->right);
}
int main() {
Node* root = NULL;
root = insertNode(root, 5);
insertNode(root, 3);
insertNode(root, 10);
insertNode(root, 1);
insertNode(root, 6);
printf("In Order Traversal: ");
printInOrder(root);
return 0;
}
```
这段代码中定义了一个 `Node` 结构体表示二叉树中的节点,其包含了一个整数 `val` 表示节点的值,以及两个指向其左右子节点的指针 `left` 和 `right`。 定义了 `createNode` 函数用于创建一个新节点,返回节点指针。 `insertNode` 函数用于向二叉树中插入新节点,并返回根节点的指针。其中包含递归调用,当插入的值小于等于当前节点值时,当前节点的左子节点递归插入;反之,递归插入当前节点的右子节点。 最后定义了 `printInOrder` 函数对二叉树进行中序遍历,并输出每个节点的值。最后在主函数中进行函数调用,创建一个二叉树,并输出结果。