递归尽管效率不高,耗内存,但是对于程序猿来说,写少很多代码,初学者会很喜欢的
下面来看一下实现的过程:
void TREE_INSERT(struct *x, struct *z)
{
static struct Tree *y = NULL;//一直是指向x的父节点,由于x为根节点,所以根节点
//的父节点为NULL;
static struct Tree *root = x;
//首先考虑根节点
if (x->key != NULL)
{
y = x;
if (z->key < x->key)
{
TREE_INSERT(struct x->lchild, struct z) //传进来的准确来说应该是个地址
}
else
{
TREE_INSERT(struct x->rchild, struct z)
}
}
//如果根节点为NULL怎么办
else
{
z->parent = y;
if (y->key == NULL)
{
root = z;
}
else if (z->key < y->key)
{
y->lchild = z;
}
else
{
y->rchild = z;
}
z->lchild = new strcut Tree[LEN];
z->rchild = new strcut Tree[LEN];
z->lchild = new strcut Tree[LEN] = z->lchild = new strcut Tree[LEN] = NULL;
}
}