題目要求:驗證一個樹是否為二叉搜索樹。
二叉搜索樹:(BST,二叉排序樹,二叉查找樹)。
一顆二叉檢索樹或者為空樹,或者滿足:
左子樹的所有值都小于根節點的值,右子樹的所有值都大于根節點的值。并且左右子樹均為二叉搜索樹。下圖中,第一個樹是BST,第二個樹不是BST(原因:6<10)。
一顆BST
不是BST
因此,為了驗證一顆二叉樹是否為BST,只比較根節點和左右子節點的大小是不行的,還需要驗證整個左右子樹是否滿足要求。
那么,我們可以使用兩個值來限定子樹的取值范圍,上限max,下限min,每次遞歸時,都可以把當前節點的值賦給上限或者下限。
代碼如下。