📜  门| GATE CS Mock 2018 |问题 4(1)

📅  最后修改于: 2023-12-03 14:58:22.588000             🧑  作者: Mango

GATE CS Mock 2018 | 问题 4

这是2021 GATE计算机科学的模拟考试中的问题4,旨在考察程序员对程序设计的理解和应用能力。在这道题目中,你需要写一个函数来判断一个数是否是一个二叉搜索树的节点。让我们深入了解一下这道题目。

题目描述

给定一个二叉搜索树和一个值,写一个函数 bool isBST(Node* root, int val) 来确定这个值是否是这个二叉搜索树(BST)中的节点。

输入

这个函数接收两个参数:一个指向二叉搜索树根节点的指针 root 和一个整数 val

输出

如果 val 是二叉搜索树中的节点,则返回 true,否则返回 false

举例

比如,下面的二叉搜索树和 val=5

      4
     / \
    2   6
   / \
  1   3

这个函数应该返回 true

解题思路

要判断一个数是否是二叉搜索树中的节点,我们可以使用递归的方法来检查它是否在树中。具体地,可以如下操作:

  1. 如果树为空,则返回 false
  2. 如果当前节点的值等于 val,则返回 true
  3. 如果当前节点的值大于 val,则继续在左子树中查找。
  4. 如果当前节点的值小于 val,则继续在右子树中查找。

下面是一个简单的示例代码片段,用于说明如何实现这个算法:

bool isBST(Node* root, int val) {
    if (root == NULL) {
        return false;
    } else if (root->val == val) {
        return true;
    } else if (root->val > val) {
        return isBST(root->left, val);
    } else {
        return isBST(root->right, val);
    }
}

这段代码首先检查根节点是否为空,如果为空则返回 false。如果根节点的值等于 val,则返回 true。如果根节点的值大于 val,则递归检查根节点的左子树;否则递归检查根节点的右子树。这些基本操作可以用递归函数实现。

总结

本文介绍了如何编写函数来判断一个数是否是二叉搜索树的节点。具体地,我们使用递归来检查树中是否存在该节点。希望这篇文章能够帮助读者更好地理解和应用二叉搜索树算法。