今日算法(二叉树)

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

时间复杂度(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;
  }
相关推荐
少司府22 分钟前
C++进阶:红黑树
开发语言·数据结构·c++·b树·二叉树·红黑树
不会C语言的男孩41 分钟前
C++ Primer 第19章:特殊工具与技术
数据结构·c++
hnjzsyjyj1 小时前
东方博宜OJ 1010:数组元素的排序 ← 桶排序
数据结构·排序算法·桶排序
小欣加油1 小时前
Leetcode31 下一个排列
数据结构·c++·算法·leetcode·职场和发展
凤凰院凶涛QAQ1 小时前
《Java版数据结构 & 集合类剖析》链表与LinkedList:节点手拉手,增删不用愁
java·数据结构·链表
无限进步_2 小时前
【Linux】进程状态、僵尸与孤儿、进程调度
linux·运维·服务器·开发语言·数据结构·算法
郝学胜-神的一滴2 小时前
力扣 662 :二叉树最大宽度
java·数据结构·c++·python·算法·leetcode·职场和发展
小欣加油2 小时前
leetcode169 多数元素
数据结构·c++·算法·leetcode·职场和发展
代码中介商2 小时前
图论实战:最小生成树与拓扑排序精解
数据结构
SHARK_pssm2 小时前
【数据结构——双向链表】
数据结构·经验分享·笔记·链表