今日算法(二叉树)

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

时间复杂度(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;
  }
相关推荐
一个初入编程的小白3 小时前
数据结构:二叉树链式结构的实现
数据结构
雨落在了我的手上10 小时前
Java数据结构(十一):优先级队列(堆)
数据结构
带多刺的玫瑰15 小时前
Leecode#26刷题之删除有序数组中的重复项
数据结构·算法·leetcode
洋不写bug17 小时前
二叉树(二) 常见基础操作解析|结点数、树高、查找结点、判断完全二叉树
java·开发语言·数据结构·完全二叉树·二叉树结点数·树高·查找结点
化雨成烟17 小时前
C++之AVL树
数据结构
wabs66618 小时前
关于二叉树【429.N叉树的层序遍历的思考】
数据结构·c++·算法·leetcode·二叉树
C++ 老炮儿的技术栈18 小时前
MFC CPtrArray的用法
开发语言·数据结构·c++·算法·mfc·c
不会就选b18 小时前
算法日常・每日刷题--<贪心>6
数据结构·算法·leetcode
青山木19 小时前
Hot 100 --- 跳跃游戏 II
java·数据结构·算法·leetcode·贪心算法
神明不懂浪漫20 小时前
【第四章】索引——B+树、回表,加快数据库的查找能力的利器
开发语言·数据结构·数据库·经验分享·笔记·b树