二叉查找树的特点是结点的值大于其左孩子的值,小于其右孩子的值,因此我们可以使用中序遍历,这样遍历得到的元素的值是依次增大的,所以我们只需在中序遍历的时候判断当前结点的值是否大于前一个结点的值(可以使用一个pre指针跟踪当前节点的前一个结点)。
bool isBST(struct node* root)
{
static struct node *prev = NULL;
// 中序遍历树并记录前驱结点
if (root)
{
if (!isBST(root->left))
return false;
if (prev != NULL && root->data <= prev->data)
return false;
prev = root;
return isBST(root->right);
}
return true;
}
本文介绍了一种通过中序遍历来验证给定的二叉树是否为二叉查找树的方法。具体而言,该方法利用了二叉查找树的特性:每个节点的值大于其左子树中的所有节点的值,并且小于其右子树中的所有节点的值。在遍历过程中,使用了一个额外的指针来记录前一个访问的节点,以便于比较相邻节点的值。
1665

被折叠的 条评论
为什么被折叠?



