給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。
乙個二叉搜尋樹具有如下特徵:
示例 1:
輸入:
1 3
輸出:true
示例 2:
輸入:
1 4
3 6
輸出:false
解釋:輸入為: [5,1,4,null,null,3,6]。
根節點的值為 5 ,但是其右子節點值為 4 。
關鍵資訊
1二叉搜尋樹的中序遍歷是遞增的,我們採用遞迴的到其中序變數結果
2不能採用全域性變數,則需考慮遞迴函式中資訊的傳遞
遞迴函式是乙個函式(廢話),函式則有 名,引數,返回值
所以需考慮利用引數或返回值完成本題
本人愚鈍,起先只考慮了利用引數i傳遞中序前驅,用於比較其中序前驅與當前節點的大小關係,引數i在作為中序前驅的同時肩負著判斷該樹是否為二叉搜尋樹的資訊(本文中將其稱為重要資訊)
利用返回值獲得中序前驅,
/**
*definition for a binary tree node.
*struct treenode
* };
*/class solution
return i;
}bool isvalidbst( treenode* root )
};
bool judge(struct treenode* root,long long *data)
if(root->val>*data)
*data=root->val;
else
return false;
if(root->right!=null)
return true;
}bool isvalidbst(struct treenode* root)
leetcode 98 驗證二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。乙個二叉搜尋樹具有如下特徵 示例 1 輸入 2 1 3 輸出 true示例 2 輸入 5 1 4 3 6 輸出 false 解釋 輸入為 5,1,4,null,null,3,6 根節點的值為 5 但是其右子節點值為 4 解題思路 中序遍歷遞增,每次只...
leetcode 98 驗證二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。乙個二叉搜尋樹具有如下特徵 示例 1 輸入 2 1 3 輸出 true示例 2 輸入 5 1 4 3 6 輸出 false 解釋 輸入為 5,1,4,null,null,3,6 根節點的值為 5 但是其右子節點值為 4 如果對二叉搜尋樹不夠了解,可能...
leetcode98 驗證二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 示例 1 輸入 2 1 3 輸出 true示例 2 輸入 5 1 4 3 6 輸出 false 解釋 輸入為 5,1,4,null,null,3,6 根節點的值為 5 但是其右子節點值為 4 解法1 可以利用它本身的性...