二叉链表,输出以x为根的子树的所有节点,c语言
时间: 2025-01-29 08:16:26 浏览: 27
在C语言中,二叉链表通常用来表示二叉树的结构。二叉树的每个节点包含一个数据部分和两个指向子节点的指针(左子树和右子树)。要输出以某个节点为根的子树的所有节点,可以通过递归遍历来实现。
以下是一个示例代码,展示了如何定义二叉树节点结构并实现一个函数来输出以某个节点为根的子树的所有节点:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建新节点
TreeNode* createNode(int data) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
if (!newNode) {
printf("内存分配失败\n");
exit(1);
}
newNode->data = data;
newNode->left = newNode->right = NULL;
return newNode;
}
// 递归遍历并输出子树的所有节点
void printSubtree(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->data); // 访问根节点
printSubtree(root->left); // 递归访问左子树
printSubtree(root->right); // 递归访问右子树
}
int main() {
// 创建示例二叉树
/*
1
/ \
2 3
/ \
4 5
*/
TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 输出以节点2为根的子树的所有节点
printf("以节点2为根的子树的所有节点: ");
printSubtree(root->left);
return 0;
}
```
在这个示例中,`createNode`函数用于创建新节点,`printSubtree`函数用于递归遍历并输出子树的所有节点。`main`函数中创建了一个示例二叉树,并调用`printSubtree`函数输出以节点2为根的子树的所有节点。
阅读全文
相关推荐



















