一:解题思路
第一种方法:递归法,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; } }