• LeetCode700. 二叉搜索树中的搜索


    题目

    代码

    简单递归

     1 class Solution {
     2 public:
     3     TreeNode* searchBST(TreeNode* root, int val) {
     4         if(!root) return NULL;
     5         TreeNode* p;
     6         if(root->val == val) return root;
     7         if(root->val > val) p = searchBST(root->left,val);
     8         if(root->val < val) p = searchBST(root->right,val);
     9         return p;
    10     }
    11 };
    1 class Solution {
    2 public:
    3     TreeNode* searchBST(TreeNode* root, int val) {
    4         if(root == NULL || root->val == val) return root;
    5         if(root->val > val) return searchBST(root->left,val);
    6         if(root->val < val) return searchBST(root->right,val);
    7         return NULL;
    8     }
    9 };

    在递归遍历的时候,什么时候直接return 递归函数的返回值,什么时候不用加这个 return呢? 根据代码随想录的Carl学长所说,如果要搜索一条边,递归函数就要加返回值,这里也是一样的道理。

    因为搜索到目标节点了,就要立即return了,这样才是找到节点就返回(搜索某一条边),如果不加return,就是遍历整棵树了。

    迭代

     1 class Solution {
     2 public:
     3     TreeNode* searchBST(TreeNode* root, int val) {
     4         while(root!=NULL){
     5             if(root->val == val) return root;
     6             else if(root->val > val) root = root->left;
     7             else root = root->right;
     8         }
     9         return NULL;
    10     }
    11 };
  • 相关阅读:
    iOS~runtime理解上篇
    iOS
    iOS-数据库+上传队列+runtime
    python3
    必应壁纸破解下载
    python3-django Mac下安装以及查看路径
    iOS
    iOS
    Tornado异步之-协程与回调
    iOS
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14268014.html
Copyright © 2020-2023  润新知