输出完全二叉树中某个结点的双亲和所有子孙。假设完全二叉树的顺序存储在一维数组A[n]中。

4eb10f065ccd4901a6887dabc4b8b77f.jpg

思路:    首先定义两个函数,`getParent`函数用于获取指定结点的双亲结点的索引,`printDescendants`函数用于输出指定结点的所有子孙。然后在`main`函数中,创建表示完全二叉树的数组A,并针对指定结点索引进行相关操作,包括输出双亲结点和所有子孙。

#include <stdio.h>

// 获取指定结点的双亲结点
int getParent(int index) {
    if (index <= 0) {
        return -1;  // 根节点没有双亲
    } else {
        return (index - 1) / 2;
    }
}

// 输出指定结点的所有子孙
void printDescendants(int A[], int n, int index) {
    if (index < n) {
        printf("结点%d的值为:%d\n", index, A[index]);

        // 计算左右子节点的索引
        int leftChild = 2 * index + 1;
        int rightChild = 2 * index + 2;

        // 输出左子节点的值和所有子孙
        if (leftChild < n) {
            printf("结点%d的左子节点为:%d\n", index, A[leftChild]);
            printDescendants(A, n, leftChild);
        }

        // 输出右子节点的值和所有子孙
        if (rightChild < n) {
            printf("结点%d的右子节点为:%d\n", index, A[rightChild]);
            printDescendants(A, n, rightChild);
        }
    }
}

int main() {
    int A[] = {1, 2, 3, 4, 5, 6, 7};  // 假设完全二叉树的顺序存储在数组A中
    int n = sizeof(A) / sizeof(int);   // n为数组A的长度

    int index = 2;  // 需要输出双亲和所有子孙的结点索引,这里以索引为2的结点为例

    // 输出指定结点的双亲结点
    int parentIndex = getParent(index);
    if (parentIndex != -1) {
        printf("结点%d的双亲结点为:%d\n", index, A[parentIndex]);

        // 输出指定结点的所有子孙
        printDescendants(A, n, index);
    } else {
        printf("结点%d为根节点,无双亲结点\n", index);
    }

    return 0;
}

 

 

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-05 20:18:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-05 20:18:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-05 20:18:02       82 阅读
  4. Python语言-面向对象

    2023-12-05 20:18:02       91 阅读

热门阅读

  1. NC56 XML 报文校验出错一例

    2023-12-05 20:18:02       54 阅读
  2. WeakMap

    WeakMap

    2023-12-05 20:18:02      61 阅读
  3. 机器学习(四十九):Mean-Shift 聚类

    2023-12-05 20:18:02       57 阅读
  4. js轮播图示例代码

    2023-12-05 20:18:02       59 阅读
  5. 【软件测试学习】—软件质量需求(四)

    2023-12-05 20:18:02       51 阅读
  6. 第十四周课堂笔记

    2023-12-05 20:18:02       56 阅读