递归法:
思路:
比较当前节点,如果是,就返回。如果不是就比较大小。根据大小往不同的方向递归。
注意点:
1.左右不要写错了
val 大于 root->val --------------------> right
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
if(root == nullptr || root->val == val)
return root;
else if(root->val < val)
return searchBST(root->right, val);
else
return searchBST(root->left, val);
return nullptr;
}
};
迭代法:
思路:
不断比较 根结点的值 和 val 的大小。然后移动根结点
注意点:
1. 要用while , 因为根结点需要不断移动比较
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
while(root != nullptr)
{
if(root->val > val) root = root->left;
else if(root->val < val) root = root->right;
else return root;
}
return nullptr;
}
};