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

求关于二叉树一句代码解释解决方法

2012-04-12 
求关于二叉树一句代码解释代码实现在binary search tree插入结点,删除结点....(以下代码略看,或不看,只是

求关于二叉树一句代码解释
代码实现在binary search tree插入结点,删除结点....(以下代码略看,或不看,只是想清楚的表述下我的问题)
请帮忙解释下如:
curr->right,或者curr->left,(*curr *left *right 均是指向Node型的指针)在代码中代表什么意思?我大概知道的意思是比较在node里的值确定加在左边还是右边。疑惑的是为什么是指针指向指针,这条代码的具体含义是什么?

下面代码中的函数变量“BSTNode*& root”是什么意思??

谢谢....

bool bst_insert(BSTNode*& root, int value) {
  BSTNode* pre = NULL;
  BSTNode* curr = root;
  while(curr != NULL) {
  if(value < curr->value) { // 向左 
  pre = curr;
  curr = curr->left;
  }
  else if(value > curr->value) { // 向右 
  pre = curr;
  curr = curr->right; 
  }
  else // 失败 
  return false;
  }
  curr = new BSTNode; // 插入 
  curr->value = value;
  curr->left = curr->right = NULL;
  if(pre == NULL)
  root = curr;
  else

  curr->value < pre->value ? pre->left=curr : pre->right=curr;
  return true;
}

[解决办法]
首先问个问题:你了解指针和指向结构的指针的含义与表达方式吗?如果不知道基础知识,那就没法和你说了。

curr->right,含义是返回当指向前节点右子树的指针。
curr->left,含义是返回指向当前节点左子树的指针。

意思很清楚,但若没有基础知识就说不明白了。
[解决办法]
楼主去看看链表的有关知识,上个图给你看下:



[解决办法]
curr->right,含义是返回指向当前节点右子树的指针。
[解决办法]
看下这个图片吧:
http://image.baidu.com/i?ct=503316480&z=&tn=baiduimagedetail&word=%B6%FE%B2%E6%CA%F7%C1%B4%B1%ED%CD%BC&in=25750&cl=2&lm=-1&st=&pn=0&rn=1&di=123904482435&ln=775&fr=ala0&fm=ala0&fmq=1333773129250_R&ic=&s=&se=&sme=0&tab=&width=&height=&face=&is=&istype=#pn0&-1&di123904482435&objURLhttp%3A%2F%2Flearn.akae.cn%2Fmedia%2Fimages%2Flinkedlist.binarytree.png&fromURLhttp%3A%2F%2Flearn.akae.cn%2Fmedia%2Fch26s02.html&W432&H1202&T9853&S48&TPpng

[解决办法]
是用于以指针访问结构和类成员。所以curr指针就用它访问了它所指向节点的right指针和left指针。
[解决办法]
是啊 curr->left; 访问就是结点的那个成员,这个成员是个指针,指向了 下一个结点。
所以 curr = curr->left; 就指向了下一个结点。
[解决办法]

探讨

引用:
是用于以指针访问结构和类成员。所以curr指针就用它访问了它所指向节点的right指针和left指针。
还有一个疑惑,在写程序的时候可以这样写吗:*curr->*right

[解决办法]
也是不行的:
curr是指针 curr->right也是指针 才能赋值。

*curr 是对 curr指针进行解引用:
引用:

引用:
是用于以指针访问结构和类成员。所以curr指针就用它访问了它所指向节点的right指针和left指针。
还有一个疑惑,在写程序的时候可以这样写吗:*curr->*right
不能,->没有这种用法。

热点排行