首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,二叉树的插入

2012-10-11 
求助,二叉树的插入struct BTreeNode//节点建立{int dataBTreeNode *lchildBTreeNode *rchild}void ins

求助,二叉树的插入
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……

热点排行