读书人

二叉树的插入

发布时间: 2012-10-11 10:16:10 作者: rapoo

求助,二叉树的插入
struct BTreeNode //节点建立
{
int data;
BTreeNode *lchild;
BTreeNode *rchild;
};

void insertBST(BTreeNode *p,BTreeNode *root) //p是要插入的节点,root是根节点
{
if(root==NULL)
root=p;
else
if(p->data<root->data)
insertBST(p,root->lchild);
else
insertBST(p,root->rchild);
}

int main() //主程序,测试用
{
//BTreeNode *p=creatBST();
//InOrder(p);
BTreeNode *p=new BTreeNode;
p->data=12;
p->lchild=p->rchild=NULL;
BTreeNode *p1=new BTreeNode;
p1->data=11;
p1->lchild=p1->rchild=NULL;
insertBST(p,p1);
cout<<p->lchild->data;
return 0;
}

为什么一运行就出错,插入算法那错在哪了?

[解决办法]
两个地方:
1)void insertBST(BTreeNode *p,BTreeNode *&root) //p是要插入的节点,root是根节点
这里应该是BTreeNode *&root,要不就用指针的指针
2)最后是把p插入到p1的右边
if(p1->rchild != NULL)
cout<<p1->rchild->data;
[解决办法]

探讨

引用:

引用:
引用:

引用:
C/C++ code


void insertBST(BTreeNode *p,BTreeNode *root) //p是要插入的节点,root是根节点
{
if(root==NULL)
root=p;
else
{
if(p->data<root->data……

读书人网 >C++

热点推荐