zoukankan      html  css  js  c++  java
  • 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 };
  • 相关阅读:
    Can't connect to local MySQL server through socket '/tmp/mysql.sock'
    reversePairs
    sort
    分割数组的最小值
    decode string
    276. 栅栏涂色
    133. Clone Graph
    Palindromic string
    爬楼梯
    正则匹配
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14268014.html
Copyright © 2011-2022 走看看