c语言求完全二叉树的共同祖先
时间: 2023-12-04 20:36:58 浏览: 96
请问你是想找到两个节点在一棵完全二叉树中的共同祖先吗?如果是的话,你可以使用数组表示完全二叉树,并通过节点的索引来确定它们的关系。
以下是一个示例的代码,可以找到两个节点在完全二叉树中的共同祖先:
```c
#include<stdio.h>
int findCommonAncestor(int arr[], int n, int node1, int node2) {
while (node1 != node2) {
if (node1 > node2)
node1 /= 2;
else
node2 /= 2;
}
return arr[node1];
}
int main() {
int arr[] = {0, 1, 2, 3, 4, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int node1 = 3;
int node2 = 6;
int commonAncestor = findCommonAncestor(arr, n, node1, node2);
printf("The common ancestor of node %d and node %d is node %d.\n", node1, node2, commonAncestor);
return 0;
}
```
这段代码中,我们使用数组 `arr` 来表示完全二叉树,数组索引代表节点的编号。`findCommonAncestor` 函数接受完全二叉树数组、节点个数和两个节点的编号作为参数,然后使用循环逐步向上寻找两个节点的共同祖先,直到找到共同祖先为止。
阅读全文