二叉树的搜索

1.正常递归

 1     TreeNode* searchBST(TreeNode* root, int val) {
 2      if (!root)
 3          return nullptr;
 4      if (val > root->val)
 5      {
 6          root = searchBST(root->right, val);
 7      }
 8      else if (val < root->val)
 9      {
10          root = searchBST(root->left, val);
11      }
12          return root;
13      }

2.中序递归

 1  TreeNode* searchBST(TreeNode* root, int val) {
 2      if (!root)
 3          return nullptr;
 4      TreeNode* res = searchBST(root->left, val);
 5      if (res)
 6          return res;
 7      else if (root->val > val)
 8          return nullptr;
 9      else if (root->val == val)
10          return root;
11      TreeNode* res = searchBST(root->right, val);
12      return res;
13  }

3.迭代

 1 TreeNode* searchBST(TreeNode* root, int val) {
 2     while (root)
 3     {
 4         if (root->val > val)
 5             root = root->left;
 6         else if (root->val < val)
 7             root = root->right;
 8         else
 9             return root;
10     }
11     return root;
12 }

 

转载于:https://www.cnblogs.com/zouma/p/11566861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值