【问题标题】:searching for an element in BST在 BST 中搜索元素
【发布时间】:2020-07-30 04:10:27
【问题描述】:

以下是在 BST 中搜索元素的代码。 谁能解释一下代码中&(*cur)->right&(*cur)->left 的含义?

谢谢

TreeNode *insertIntoBST(TreeNode *root, int val)
    {
        TreeNode **cur = &root;
        while( *cur )
            cur = (val > (*cur)->val) ? &(*cur)->right : &(*cur)->left;
        *cur = new TreeNode(val);
        return root;
    }

【问题讨论】:

  • 能否请您更好地格式化代码?不可读。
  • 您应该为 BST 编写自己的代码,而不是试图理解其他人的代码。
  • 请参阅this 以获得解释。

标签: c++ pointers binary-search-tree


【解决方案1】:

这些属性是当前节点的左右子节点。而while遍历树以找到适合该值的位置,因为它大于或小于当前节点作为二叉搜索树定义

【讨论】:

    【解决方案2】:

    cur 是一个指向指针的指针,因此,要访问它的子元素,您需要取消引用它(*cur),然后才能访问元素(->left->right)。

    在获得下一个元素(rightleft)后,它是一个指针,您需要将它存储在cur 中。但是 cur 是一个指向指针的指针,所以你需要获取 if 的引用(使用 & 运算符)。

    整体表情是丑陋的&(*cur)

    顺便说一句,你需要一个指向指针的原因是因为*cur = new TreeNode(val);这一行。

    如果你只是使用一个指针,这一行将什么都不做,只会改变你的临时指针。由于您使用的是指向指针的指针,因此您正在更改树中的原始节点。

    【讨论】:

      猜你喜欢
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2023-02-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多