【LeetCode75】第四十一题 二叉搜索树中的搜索

目录

题目:

示例:

分析:

代码:


题目:

【LeetCode75】第四十一题 二叉搜索树中的搜索_第1张图片

示例:

【LeetCode75】第四十一题 二叉搜索树中的搜索_第2张图片

分析:

题目给我们一个搜索二叉树,让我们找出节点值等于目标的节点并返回出去。

首先我们可以直接遍历整棵二叉树,找到值相同的节点就返回出去,不过这样就没有用到二叉搜索数的特性了。

二叉搜索数的特性就是,每一个节点的左子树上所有节点的值都会比当前节点的值更小,而右子树上所有节点的值都会比当前节点的值更小。

因此我们在遍历搜索二叉树的时候将当前节点的值和目标值做比较,如果值和当前节点的值相同,那么返回该节点。如果当前节点的值比目标值更小,那说明如果有值等于目标值的节点,那一定是在当前节点的右子树,所以此时我们应该向右子树移动。反之则向左子树移动。

直到找到了目标节点或者是遍历到了空指针节点,那么都将当前节点返回出去即可。

【LeetCode75】第四十一题 二叉搜索树中的搜索_第3张图片

代码:

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);
    }
};

你可能感兴趣的:(LeetCode75题解,算法,leetcode,c++,数据结构)