今日算法(二叉树)

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

时间复杂度(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;
  }
相关推荐
疯狂打码的少年6 小时前
【数据结构】图的遍历:深度优先搜索(DFS)
数据结构·笔记·算法·深度优先
土司大王9 小时前
LeetCode hot100——除了自身以外数组的乘积
数据结构·算法·leetcode
神威难绷泪13 小时前
数据结构:哈希表 算法相关 排序算法
数据结构
Zguigo15 小时前
树的前序|中序|后序遍历【使用栈实现】
数据结构·算法
2401_8697695915 小时前
list 2
数据结构·list
ambition2024218 小时前
操作系统同步:读者-写者问题与读写公平法详解(附每个 PV 操作含义)
linux·开发语言·数据结构·unix
疯狂打码的少年1 天前
【数据结构】图的存储结构:邻接矩阵与邻接表
数据结构·笔记
203号居民1 天前
LeetCode hot 100 —41. 缺失的第一个正数
数据结构·算法·leetcode
2401_862880821 天前
数据结构 --- 栈
c语言·数据结构·算法
额额额对了1 天前
数据结构:二叉树
c语言·数据结构·算法