3.2.32

3.2.32 #

解答 #

本题在原书后续印刷中已修改,这里仍然采用中文版的题目。

官网解答见:https://algs4.cs.princeton.edu/32bst/BST.java.html (isBST()

书中已经给出了答案,当然在 Java 和 C# 里,&& 总是从左向右计算的,而且遇到 false 会直接返回结果。

如果数据结构中存在环,IsOrdered 有可能会陷入无限递归的情况,因此调用顺序比较重要。

代码 #

public static bool IsBST(BST<TKey, TValue> bst)
{
    return IsBinaryTree(bst) &&
           IsOrdered(bst) &&
           HasNoDuplicates(bst);
}

另请参阅 #

Boolean logical operators (C# reference)

Equality, Relational, and Conditional Operators

BinarySearchTree 库