二叉树的插入


不要忘了*后面的&

void insert(Node*&root,int p){
  // Node*&root 的&不能忘,要不然没法修改真正的指针指向,只修改了镜像的。
  if(root==NULL){
    root=new Node();
    root->num=p;
    return;
  }
  else if(root!=NULL)
  {
      if(p<root->num){
          insert(root->left,p);
      }
      else{
          insert(root->right,p);
      }
  }
}

错误的代码:

  • 原因:p->left返回的不是p->left的地址,是NULL,对NULL的修改不是对root的修改
void add(Node*root,int num){
  Node *p=root;
  while(p!=NULL){
    if(p->num>num){
      p=p->left;
    }
    else{
      p=p->right;
    }
  }
  p=new Node();
  p->num=num;
}

正确的代码:

void add(Node*&root,int num){
  if(root==NULL){
    root=new Node();
    root->num=num;
    return;
  }
  if(root->num>num){
      add(root->left,num);
  }
  else{
      add(root->right,num);
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 介绍 红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但...
    小陈阿飞阅读 1,240评论 0 3
  • 算法精髓: 自底向上方法,高层依赖底层的max(left->height,right->height)+1。利用递...
    小幸运Q阅读 929评论 0 1
  • 文|南乔 读了那么多小说,故事主线千篇一律。四年前读过的一本小说的话我至今记忆犹新。《我终究是爱你的》当程倚庭对唐...
    公子凉风阅读 790评论 10 3
  • 大家好,我是xiyue手绘,分享给你最好的手绘教程! 下面是用心的简笔画教程~~ 公开课篇 【简笔画公开课No.1...
    xiyue手绘阅读 1,485评论 1 14
  • 英国文艺复兴时期著名的作家,哲学家弗朗西斯.培根认为,人是自然的主人,可以驾驭自然。但是"要命令自然,就必须...
    强者无敌阅读 681评论 0 0