win2008 iis配置網(wǎng)站服務(wù)營(yíng)銷理論
根據(jù)二叉搜索樹的特性,我們使用中序遍歷,保證節(jié)點(diǎn)按從小到大的順序遍歷。既然要驗(yàn)證,就是看在中序遍歷的條件下,各個(gè)節(jié)點(diǎn)的大小關(guān)系是否符合二叉搜索樹的特性。雙指針法和適合解決這個(gè)問題,一個(gè)指針指向當(dāng)前節(jié)點(diǎn),另一個(gè)指針指向前一個(gè)節(jié)點(diǎn)(指的是按照中序遍歷順序的前一個(gè)節(jié)點(diǎn)),不斷后移兩個(gè)指針,兩兩進(jìn)行比較。這只是大致思路,大家可以結(jié)合我的代碼以及注釋加以理解。
代碼及注釋如下:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* pre = NULL;//題目屬于要驗(yàn)證二叉樹的特性,遞歸函數(shù)返回值用布爾類型3比較適合bool isValidBST(TreeNode* root) {if(root == NULL) return true;//遞歸左子樹bool judge1 = isValidBST(root -> left);if(pre == NULL){pre = root;//將pre從空節(jié)點(diǎn)移動(dòng)到葉子結(jié)點(diǎn)}else{if(root -> val > pre -> val){pre = root;//后移pre}else{return false;}}//遞歸右子樹bool judge2 = isValidBST(root -> right);return judge1 && judge2;}
};