1. 程式人生 > 實用技巧 >LeetCode 700.二叉樹中的搜尋

LeetCode 700.二叉樹中的搜尋

題目描述連結: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; } };