二叉搜索树插入元素key的递归版本
主要思想:从树根开始,比较key与树根的元素的大小:
若小于,判断新树根左孩子是否为空,若为空则此左孩子所在位置即为插入点,若为空则把树根的左孩子作为新的树根进行递归处理;
若大于或等于,判断新树根右孩子是否为空,若为空则此右孩子所在位置即为插入点,若为空则把树根的右孩子作为新的树根进行递归处理;
关键代码如下:
//递归版本
void RecursiveInsert(BinTreeNode* node,BinTreeNode* T)
{
BinTreeNode* p = T;
if(node->key < p->key)
{
if(p->left == NULL)
{
p->left = node;
return ;
}
<span style="white-space:pre"> </span>RecursiveInsert(node,p->left);
}
else
{
if(p->right == NULL)
{
p->right = node;
return ;
}
RecursiveInsert(node,p->right);
}
}
void RecursiveBinaryInsert(int key)
{
BinTreeNode* node=new BinTreeNode(key);
if(root == NULL)
{
root = node;
return ;
}
RecursiveInsert(node,root);
}