Programmer interview guide checks whether it is BST or not.
[Disclaimer: All Rights Reserved. indicate the source for reprinting. Do not use it for commercial purposes. Contact mailbox: libin493073668@sina.com]
Question link: http://www.nowcoder.com/practice/536c0199151245f897da2c5390930657? Rp = 1 & ru =/ta/cracking-the-coding-interview & qru =/ta/cracking-the-coding-interview/question-ranking
Description
Implement a function to check whether a binary tree is a binary search tree.
For the given tree's root node pointer TreeNode * root, please return a bool, which indicates whether the tree is a binary search tree.
Ideas
We only need to judge whether the left node, right node, and parent node meet the law of the binary search tree when searching down.
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Checker{public:bool checkBST(TreeNode *root){// write code herereturn isBST(root);}bool isBST(TreeNode *root){if(root==nullptr)return true;bool left = true,right=true;if(root->left && root->left->val>root->val)return false;if(root->right && root->right->val<root->val)return false;if(root->left)left = isBST(root->left);if(root->right)right = isBST(root->right);return left && right;}};
Copyright Disclaimer: This article is the original article of the blogger. If it is reproduced, please indicate the source