编辑代码

#include <stdio.h>
#include <stdlib.h>

// 定义树节点结构
typedef struct TreeNode {
    int data;                      // 节点存储的数据
    struct TreeNode* firstChild;   // 指向第一个子节点的指针
    struct TreeNode* nextSibling;   // 指向下一个兄弟节点的指针
} TreeNode;

// 创建新节点的函数
TreeNode* createNode(int value) {
    TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
    newNode->data = value;
    newNode->firstChild = NULL;   // 初始化第一个子节点为 NULL
    newNode->nextSibling = NULL;   // 初始化下一个兄弟节点为 NULL
    return newNode;
}

// 递归遍历树的函数
void traverseTree(TreeNode* node) {
    if (node == NULL) return;

    // 访问当前节点
    printf("%d ", node->data);

    // 遍历第一个子节点
    traverseTree(node->firstChild);

    // 遍历兄弟节点
    traverseTree(node->nextSibling);
}

// 主函数
int main() {
    // 创建树节点
    TreeNode* root = createNode(1);
    TreeNode* child1 = createNode(2);
    TreeNode* child2 = createNode(3);
    TreeNode* child3 = createNode(4);
    TreeNode* child4 = createNode(5);

    // 构建树结构
    root->firstChild = child1; // 1 的第一个子节点是 2
    child1->nextSibling = child2; // 2 的下一个兄弟节点是 3
    child2->nextSibling = child3; // 3 的下一个兄弟节点是 4
    child1->firstChild = child4; // 2 的第一个子节点是 5

    // 遍历树
    printf("Tree traversal: ");
    traverseTree(root);
    printf("\n");

    // 释放内存(略,实际使用中应释放所有节点)

    return 0;
}