今日算法(二叉树)

搜索值,使用前中后序都可以,这里我使用层序遍历进行遍历,使用队列进行遍历

时间复杂度(O(n))

cpp 复制代码
class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) {
       // TreeNode*node=new TreeNode(0);
        //遍历二叉树,找到返回
        queue<TreeNode*> que;

        que.push(root);
        while(!que.empty())
        {
            TreeNode*node=que.front(); que.pop();
            if(node->val==val)
            return node;
            if(node->left)
            que.push(node->left);
            if(node->right)
            que.push(node->right);
        }

        return nullptr;
    }
};

层序遍历称为BFS,但这里是暴力搜索

cpp 复制代码
TreeNode* searchBST(TreeNode* root, int val) {
    while(root){
        if(root->val == val) return root;
        else if(val < root->val) root = root->left;
        else root = root->right;
    }
    return nullptr;
}

因为这是二叉搜索树,所以直接比较然后找就行,时间复杂度为O(logN).

下面是递归写法

cpp 复制代码
class Solution
{
 public:
   TreeNdoe*searchBST(TreeNdoe*root,int val)
  {
     if(root==nullptr||root->val==val) return root;
     TreeNdoe*result=nullptr;
     if(root->val > val)  result=searchBST(root->left,val);
     if(root->val < val)  result=searchBST(root->right,val);
return result;
  }
相关推荐
小赵不会秃头1 小时前
数据结构Day 06:线性结构、库操作及 Makefile 完整学习笔记
java·linux·数据结构·算法·面试
郝学胜-神的一滴1 小时前
干货版《算法导论》04:渐近复杂度与序列接口实战
java·开发语言·数据结构·c++·python·算法
curry____3031 小时前
二叉树的前序中序遍历以及用前序和中序求解树
数据结构
科技快报2 小时前
腾讯地图上线骑手模式 助力解决骑手配送“最后100米”难题
数据结构
木子墨5162 小时前
系统设计面试 | 实现一个限流器:滑动窗口 → 令牌桶 → 漏桶
java·开发语言·数据结构·数据库·面试·职场和发展
zz34572981132 小时前
cy语言之指针3
数据结构
木子墨5163 小时前
工程算法实战 | 数据库ORDER BY的底层:内存排序 → 外部归并 → 索引优化
数据结构·数据库·python·sql·算法·动态规划
鱼子星_3 小时前
【数据结构与算法】OJ题目详解(一)-单链表:从易到难的面试OJ题目
c语言·数据结构·算法·链表·面试·职场和发展
ulias2123 小时前
leetcode热题 - 7
数据结构·算法·leetcode