📅  最后修改于: 2023-12-03 14:58:22.588000             🧑  作者: Mango
这是2021 GATE计算机科学的模拟考试中的问题4,旨在考察程序员对程序设计的理解和应用能力。在这道题目中,你需要写一个函数来判断一个数是否是一个二叉搜索树的节点。让我们深入了解一下这道题目。
给定一个二叉搜索树和一个值,写一个函数 bool isBST(Node* root, int val)
来确定这个值是否是这个二叉搜索树(BST)中的节点。
这个函数接收两个参数:一个指向二叉搜索树根节点的指针 root
和一个整数 val
。
如果 val
是二叉搜索树中的节点,则返回 true
,否则返回 false
。
比如,下面的二叉搜索树和 val=5
:
4
/ \
2 6
/ \
1 3
这个函数应该返回 true
。
要判断一个数是否是二叉搜索树中的节点,我们可以使用递归的方法来检查它是否在树中。具体地,可以如下操作:
false
。val
,则返回 true
。val
,则继续在左子树中查找。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
,则递归检查根节点的左子树;否则递归检查根节点的右子树。这些基本操作可以用递归函数实现。
本文介绍了如何编写函数来判断一个数是否是二叉搜索树的节点。具体地,我们使用递归来检查树中是否存在该节点。希望这篇文章能够帮助读者更好地理解和应用二叉搜索树算法。