目录
题目:
示例:
分析:
代码:
题目:
示例:
分析:
题目给我们一个搜索二叉树,让我们找出节点值等于目标的节点并返回出去。
首先我们可以直接遍历整棵二叉树,找到值相同的节点就返回出去,不过这样就没有用到二叉搜索数的特性了。
二叉搜索数的特性就是,每一个节点的左子树上所有节点的值都会比当前节点的值更小,而右子树上所有节点的值都会比当前节点的值更小。
因此我们在遍历搜索二叉树的时候将当前节点的值和目标值做比较,如果值和当前节点的值相同,那么返回该节点。如果当前节点的值比目标值更小,那说明如果有值等于目标值的节点,那一定是在当前节点的右子树,所以此时我们应该向右子树移动。反之则向左子树移动。
直到找到了目标节点或者是遍历到了空指针节点,那么都将当前节点返回出去即可。
代码:
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
if(root==nullptr || root->val==val) return root;
if(root->val>val) return searchBST(root->left,val);
else return searchBST(root->right,val);
}
};