使用c语言编程通常使用多行的节点、父节点表示一棵树比如西安 陕西 陕西 中国 江西 中国中国 亚洲泰国 亚洲 输入一个节点之后请打印出来树中他的所有下层节点。
你可以使用C语言中的结构体来表示树的节点。每个节点可以包含一个值和一个指向子节点的指针。下面是一个示例代码,可以根据输入的节点值打印出对应节点的所有下层节点:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义树的节点结构体
typedef struct Node {
char value[100];
struct Node* child;
struct Node* sibling;
} Node;
// 创建新节点
Node* createNode(char value[]) {
Node* node = (Node*)malloc(sizeof(Node));
strcpy(node->value, value);
node->child = NULL;
node->sibling = NULL;
return node;
}
// 添加子节点
void addChild(Node* parent, Node* child) {
if (parent->child == NULL) {
parent->child = child;
} else {
Node* sibling = parent->child;
while (sibling->sibling != NULL) {
sibling = sibling->sibling;
}
sibling->sibling = child;
}
}
// 打印节点及其下层节点
void printSubtree(Node* node) {
if (node == NULL) {
return;
}
printf("%s\n", node->value);
printSubtree(node->child);
printSubtree(node->sibling);
}
int main() {
// 创建树的节点
Node* root = createNode("中国");
Node* node1 = createNode("陕西");
Node* node2 = createNode("江西");
Node* node3 = createNode("亚洲");
Node* node4 = createNode("泰国");
Node* node5 = createNode("西安");
// 构建树的结构
addChild(root, node1);
addChild(root, node2);
addChild(root, node3);
addChild(node3, node4);
addChild(node1, node5);
// 输入节点值
char input[100];
printf("请输入节点值:");
scanf("%s", input);
// 查找节点并打印下层节点
Node* currentNode = root;
while (currentNode != NULL) {
if (strcmp(currentNode->value, input) == 0) {
printSubtree(currentNode->child);
break;
}
currentNode = currentNode->sibling;
}
return 0;
}
上述代码中,首先定义了一个树的节点结构体Node,包含一个值value,以及指向子节点child和兄弟节点sibling的指针。然后创建了树的节点,并通过addChild函数将节点连接起来形成树的结构。最后,通过输入的节点值,查找对应的节点,并调用printSubtree函数打印出该节点的所有下层节点。
运行程序后,输入节点值(如"陕西"),即可打印出对应节点的所有下层节点。
原文地址: https://www.cveoy.top/t/topic/jgtJ 著作权归作者所有。请勿转载和采集!