每天做一道算法題,循序漸進,按算法分類刷題。堅持下去,看能堅持多久,也看最終能有多大成效。
驗證二叉搜索樹
給定一個二叉樹,判斷其是否是一個有效的二叉搜索樹。
假設一個二叉搜索樹具有如下特徵:
- 節點的左子樹只包含小於當前節點的數。
- 節點的右子樹只包含大於當前節點的數。
- 所有左子樹和右子樹自身必須也是二叉搜索樹。
示例 1:
<code>輸入:
2
/ \\
1 3
輸出: true
/<code>
示例 2:
<code>輸入:
5
/ \\
1 4
/ \\
3 6
輸出: false
解釋: 輸入為: [5,1,4,null,null,3,6]。
根節點的值為 5 ,但是其右子節點值為 4 。/<code>
解決方案
當根節點為null時返回true。遞歸驗證左子樹,左子樹的所有節點都小於根節點。遞歸驗證右子樹,右子樹的所有節點都大於根節點。
實現代碼
![每日算法練習20200328](http://p2.ttnews.xyz/loading.gif)
閱讀更多 突破程序員 的文章