二叉搜索树的特性就是其结点之间的有序性,即根的值大于其左儿子的值,而且小于其右儿子的值。这样导致了我们递归或者迭代的时候需要改一下以前的方法,不然就浪费了其搜索二叉树的特性。
方法一:迭代法
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
while (root != NULL) {
if (root->val > val) root = root->left;
else if (root->val < val) root = root->right;
else return root;
}
return NULL;
}
};
方法二:递归
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
if (root == NULL || root->val == val) return root;
if (root->val > val) return searchBST(root->left, val);
if (root->val < val) return searchBST(root->right, val);
return NULL;
}
};