#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
}Node;
Node* getNewNode(int data) {
Node* tree = (Node*)malloc(sizeof(Node));
tree->data = data;
tree->left = tree->right = NULL;
return tree;
}
void clear(Node* root) {
if (root == NULL) return;
clear(root->left);
clear(root->right);
free(root);
return;
}
Node* insert(Node* root, int data) {
if (root == NULL) return getNewNode(data);
if (rand() % 2 == 1) root->left = insert(root->left, data);
else root->right = insert(root->right, data);
return root;
}
Node* queue[15];
int head, tail;
void bfs(Node* root) {
head = tail = 0;
queue[tail++] = root;
while (head < tail) {
Node* node = queue[head];
if (node->left != NULL) queue[tail++] = node->left;
if (node->right != NULL) queue[tail++] = node->right;
head++;
}
}
int timenode = 0;
void dfs(Node* root) {
if (root == NULL) return;
int start, end;
timenode += 1;
start = timenode;
if (root->left != NULL) dfs(root->left);
if (root->right != NULL) dfs(root->right);
timenode += 1;
end = timenode;
printf("%d:[%d,%d]\n", root->data, start, end);
return;
}
int main()
{
srand(time(0));
Node* root = NULL;
for (int i = 0; i < 10; i++) {
root = insert(root, rand() % 100);
}
bfs(root);
dfs(root);
return 0;
}
二叉树的相关实现
本文介绍了如何使用C语言实现一个二叉树结构,包括随机插入节点和使用广度优先搜索(BFS)与深度优先搜索(DFS)进行遍历,同时在节点中记录时间戳信息。
摘要由CSDN通过智能技术生成