树用孩子兄弟表示的二叉链表存储,计算每个结点的度,叶结点度为0,用c语言编写
时间: 2024-11-25 13:12:44 浏览: 7
C语言实现二叉链表存储
5星 · 资源好评率100%
在C语言中,我们可以使用结构体来表示二叉树的节点,并使用链表的方式存储孩子的指针。首先,我们需要定义一个二叉树节点的数据结构,包含左右孩子指针、值以及度:
```c
typedef struct TreeNode {
int val; // 节点的值
struct TreeNode* left; // 左孩子
struct TreeNode* right; // 右孩子
int degree; // 节点的度(默认初始化为0)
} TreeNode;
```
接下来,我们可以定义函数来计算每个节点的度。如果节点没有孩子,那么它的度就是0;如果有左孩子但没有右孩子,度为1;有右孩子但没有左孩子,度为2;既有左又有右孩子,度为3。
```c
void calculateDegree(TreeNode* node) {
if (node == NULL) return;
if (node->left == NULL && node->right == NULL) { // 叶节点
node->degree = 0;
} else if (node->left != NULL && node->right == NULL) {
node->degree = 1;
} else if (node->left == NULL && node->right != NULL) {
node->degree = 1;
} else {
node->degree = 2;
}
// 递归处理左右子树
calculateDegree(node->left);
calculateDegree(node->right);
}
```
最后,为了遍历整个树并更新所有节点的度,你可以从根节点开始调用这个函数:
```c
int main() {
// 初始化你的二叉树...
TreeNode* root = ...;
calculateDegree(root);
// 现在你可以通过访问root.degree获取根节点的度,其他节点的度可通过它们的degree成员获取
printf("Root node's degree: %d\n", root->degree);
return 0;
}
```
阅读全文