- 论坛徽章:
- 0
|
- /*-----------------------------------------------------------
- | 函数作用:查找key值对应的结点指针
- | 输入参数:根节点root,待查找关键值key
- | 返回参数:如果找到返回结点指针,否则返回NULL
- -------------------------------------------------------------*/
- PRBTree Find_Node(PRBTree root, KEY key)
- {
- PRBTree x;
- // 找到key所在的node
- x = root;
- do
- {
- if (key == x->key)
- break;
- if (key < x->key)
- {
- if (NULL != x->left)
- x = x->left;
- else
- break;
- }
- else
- {
- if (NULL != x->right)
- x = x->right;
- else
- break;
- }
- } while (NULL != x);
- return x;
- }
复制代码
对于这一段:我有点疑问
按你的要求是否应该是这样:
- /*-----------------------------------------------------------
- | 函数作用:查找key值对应的结点指针
- | 输入参数:根节点root,待查找关键值key
- | 返回参数:如果找到返回结点指针,否则返回NULL
- -------------------------------------------------------------*/
- PRBTree Find_Node(PRBTree root, KEY key)
- {
- PRBTree x;
- // 找到key所在的node
- x = root;
- do
- {
- if (key == x->key)
- break;
- if (key < x->key)
- {
- x = x->left;
- }
- else
- {
- x = x->right;
- }
- } while (NULL != x);
- return x;
- }
复制代码
假如你要找4,当x指向3的时候,你直接判断其右结点为null, 结果你直接break了,那么这个时候x指向的是3,实际上应该返回的是null. |
|