驗證二叉查詢樹
阿新 • • 發佈:2019-02-17
二叉查詢樹
給定一個二叉樹,判斷它是否是合法的二叉查詢樹(BST)
一棵BST定義為:
節點的左子樹中的值要嚴格小於該節點的值。
節點的右子樹中的值要嚴格大於該節點的值。
左右子樹也必須是二叉查詢樹。
因為二叉查詢樹的中序遍歷是有序的。所以驗證是否為二叉查詢樹,用中序遍歷這個二叉樹,如果前一個結點的值大於當前結點的值,則證明這個不是二叉樹。
程式碼實現
bool isValidBST(TreeNode *root) {
// write your code here
if(root == NULL)
return true ;
stack<TreeNode*> stk;
TreeNode *pre = NULL;
while(root || !stk.empty())
{
if(root)
{
stk.push(root);
root = root->left;
}
else
{
root = stk.top();
stk.pop();
if (pre && (root->val <= pre->val))
return false;
pre = root;
root = root->right;
}
}
return true;
}