#include<stdio.h>
typedef struct TreeNode
{
int date;//树中的数据
int parent;//父亲节点在数组中的下标
}Node;
//结构体数组
Node* node[5];
int size;//当前元素个数
int maxSize;//当前最大元素个数
//初始化 后面区分跟和树杈
void Init()
{
size = 0;
maxSize = 5;
}
//参数为根节点的值
void insert_root(int key)
{
Node* new_node = (Node*)malloc(sizeof(Node));
new_node->date = key;
new_node->parent = -1;//跟节点的索引,变相的指针
node[size] = new_node;//将根节点存储到所建立的结构体数组中
size++;
}
//查找有无节点 key待查的值
int find_parent(int key)
{
for (int i = 0; i <= size; i++)
{
if (key == node[i]->date)
{
return i;
}
}
return -1;
}
void insert_child(int key, int parent_node)
{
if (size == maxSize)
{
//元素满了 提示或扩容
}
else
{
//1.参数是否正确 父节点的有无
int parent_index = find_parent(parent_node);
if (parent_index == -1)
{
//给个提示 跳出函数
}
else
{
Node* new_node = (Node*)malloc(sizeof(Node));
new_node->date = key;
new_node->parent = parent_index;//跟节点的索引,变相的指针
node[size] = new_node;//将根节点存储到所建立的结构体数组中
size++;
}
}
}
int main()
{
Init();
insert_root(5);
insert_child(4, 5);
insert_child(3, 4);
printf("%d-----%d", node[2]->date, node[2]->parent//其父亲的指针 索引);//node[node[2].parent]->date表示为所指的他的父亲的数据
return 0;
}