先介绍一下二叉搜索树:
二叉搜索树是一棵二叉树,每个节点都有以下特征:
- 大于左子树上任意一个节点的值
- 小于右字树上任意一个节点的值
一个二叉搜索树的例子:
题解_C语言_递归:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
struct TreeNode* searchBST(struct TreeNode* root, int val){
if(root==NULL || root->val==val){
return root;
}
return root->val<val?searchBST(root->right,val):searchBST(root->left,val);
}
题解_C语言_迭代:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
struct TreeNode* searchBST(struct TreeNode* root, int val){
while(root!=NULL && root->val!=val){
return root->val<val?searchBST(root->right,val):searchBST(root->left,val);
}
return root;
}