树节点的结构体
树的构建:
通过二叉树前序遍历的方式,将数据组成树。
TreeNode* Treecreat(Data* val, size_t* pi)
{
if (val[*pi] == '#')
{
(*pi)++;
return NULL;
}
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = val[*pi];
(*pi)++;
node->left = Treecreat(val, pi);
node->right = Treecreat(val, pi);
return node;
}
其中Data为数据类型。
树的销毁:
通过二叉树后序遍历的方式进行销毁,不能用前或者中序,会导致无法销毁整个树
void Tree_destory(TreeNode* obj)
{
if (obj == NULL)
{
return;
}
Tree_destory(obj->left);
Tree_destory(obj->right);
free(obj);
}
在树中搜索所需数据的树节点:
TreeNode* Tree_x(TreeNode* obj, int x)
{
if (obj == NULL)
{
return NULL;
}
if (obj->data == x)
{
return obj;
}
TreeNode* Tem1 = Tree_x(obj->left, x);
if (Tem1 != NULL)
{
return Tem1;
}
TreeNode* Tem2 = Tree_x(obj->right, x);
if (Tem2 != NULL)
{
return Tem2;
}
return NULL;
}
如果找到相关数据,则返回该节点地址,若无则返回NULL