寻找一棵树任意两个结点的公共父节点思路:
创建树结点的结构:1、数据 2、其父节点所在位置
创建容纳整棵树的结构:1、树的所有结点 2、结点数
创建树:通过循环,给整棵树每个结点赋值,并记录其父节点所在位置
寻找公共结点:通过循环找到包含所要寻找的数据的两个结点,用两个数组分别记录下他们的父节点,并以此向上,直到记录到根结点。
虽然比较两个数组,当两个数组中所记录的父节点位置第一次相同时,则为最近公共父节点。
创建树结点的结构:1、数据 2、其父节点所在位置
创建容纳整棵树的结构:1、树的所有结点 2、结点数
创建树:通过循环,给整棵树每个结点赋值,并记录其父节点所在位置
寻找公共结点:通过循环找到包含所要寻找的数据的两个结点,用两个数组分别记录下他们的父节点,并以此向上,直到记录到根结点。
虽然比较两个数组,当两个数组中所记录的父节点位置第一次相同时,则为最近公共父节点。
#include <stdio.h>
#include <stdlib.h>
#define Maxsize 100
typedef struct _btnode
{
char data; //结点数据
int parent; //父节点所在位置
}Btnode;
typedef struct _bttree
{
Btnode node[Maxsize]; //此树结构包含每一个结点
int n; //记录结点数
}Bttree;
Bttree CreateTree();
char Commonfather(Bttree,char,char);
int main()
{
char c1,c2,father;
Bttree aTree;
printf("请创建一颗树");
aTree=CreateTree();
fflush(stdin);
printf("请输入需要查找的两个结点:\n");
printf("第一个结点:\n");
scanf("%c",&c1);
fflush(stdin);
printf("