LeetCode 700.二叉樹中的搜尋
阿新 • • 發佈:2020-07-15
題目描述連結:https://leetcode-cn.com/problems/search-in-a-binary-search-tree/
基本思路:等於返回,當前節點值大於搜尋值從左子樹搜尋,小於從右子樹搜尋。以此可以用遞迴或迭代法實現,下面分別展示兩種方法;
(1)採用遞迴的方法 LeetCode程式碼:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };*/ class Solution { public: TreeNode* searchBST(TreeNode* root, int val) { if(!root){ return NULL; } if(root->val==val){ return root; } if(root->val>val){ return searchBST(root->left,val); }if(root->val<val){ 、 return searchBST(root->right,val); } return NULL; } };
(2)採用迭代的方法 LeetCode程式碼:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };*/ class Solution { public: TreeNode* searchBST(TreeNode* root, int val) { while(root){ if(root->val==val){ return root; } else if(root->val>val){ root=root->left; } else{ root=root->right; } } return NULL; } };