題目:node
Given a binary tree, determine if it is a valid binary search tree (BST). less
Assume a BST is defined as follows: spa
題解:
.net
題目很是善良的給了binary search tree的定義。code
這道題就是判斷當前樹是否是BST,因此遞歸求解就好。blog
第一種方法是中序遍歷法。遞歸
由於若是是BST的話,中序遍歷數必定是單調遞增的,若是違反了這個規律,就返回false。
get
代碼以下:
it
第二種方法是直接按照定義遞歸求解。
class
「根據題目中的定義來實現,其實就是對於每一個結點保存左右界,也就是保證結點知足它的左子樹的每一個結點比當前結點值小,右子樹的每一個結點比當前結 點值大。對於根節點不用定位界,因此是無窮小到無窮大,接下來當咱們往左邊走時,上界就變成當前結點的值,下界不變,而往右邊走時,下界則變成當前結點 值,上界不變。若是在遞歸中遇到結點值超越了本身的上下界,則返回false,不然返回左右子樹的結果。」
代碼以下:
Reference:http://blog.csdn.net/linhuanmars/article/details/23810735