求关于二叉树一句代码解释
代码实现在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; 就指向了下一个结点。
[解决办法]