p42 二叉搜索树中查找数字

一:解题思路

第一种方法:递归法,Time:O(h),Space:O(h),h为二分搜索树的高度

第二种方法:迭代法:Time:O(h),Space:O(1),h为二分搜索树的高度

二:完整代码示例 (C++版和Java版)

递归C++:

class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) 
    {
        if (root == NULL || root->val == val)
        {
            return root;
        }
        else if (val < root->val)
        {
            return searchBST(root->left,val);
        }
        else
        {
            return searchBST(root->right,val);
        }
    }
};

递归Java:

class Solution {
    public TreeNode searchBST(TreeNode root, int val)
    {
           if(root==null||root.val==val) return root;
           else if(val<root.val) return searchBST(root.left,val);
           else return searchBST(root.right,val);
    }
}

迭代C++:

class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) 
    {
        while (root != NULL && root->val != val)
        {
            if (val < root->val)
            {
                root = root->left;
            }
            else
            {
                root = root->right;
            }
        }

        return root;
    }
};

迭代Java:

class Solution {
    public TreeNode searchBST(TreeNode root, int val)
    {
        while(root!=null&&root.val!=val)
        {
            if(val<root.val)
            {
                root=root.left;
            }
            else
            {
                root=root.right;
            }
        }
        
        return root;
    }
}

猜你喜欢

转载自www.cnblogs.com/repinkply/p/12503743.html