今日算法(二叉树)

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

时间复杂度(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;
  }
相关推荐
青山木2 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
不会就选b2 小时前
算法日常・每日刷题--<归并排序>1
数据结构·算法
危桥带雨2 小时前
排序算法(快排、归并、计数、基数排序)
数据结构·算法·排序算法
zephyr053 小时前
数据结构-并查集
数据结构
稚南城才子,乌衣巷风流3 小时前
动态树(Dynamic Tree)数据结构详解
数据结构·算法
zander2584 小时前
114. 二叉树展开为链表
数据结构·链表·深度优先
小肝一下5 小时前
3. 单链表
c语言·数据结构·c++·算法·leetcode·链表·dijkstra
tachibana25 小时前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
延凡科技18 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
皓月斯语1 天前
B3842 [GESP202306 三级] 春游 题解
数据结构·c++·算法·题解