IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构之简单二叉搜索树 前端必会算法 -> 正文阅读

[数据结构与算法]数据结构之简单二叉搜索树 前端必会算法

二叉搜索树的定义

二叉搜索树(Binary Search Tree):是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。


通俗来说就是每棵子树都满足,左子树节点小于根节点,右子树节点大于根节点。


二叉搜索树的创建

给定一个数组返回一棵二叉搜索树

// 二叉树的结构
function TreeNode(val, left, right) {
    this.val = val;
    this.left = left;
    this.right = right;
}

传入一个值,将这个值插入到二叉搜索树中。

  1. 如果这个节点已经存在就不做操作
  2. 遵循小于根节点的在左边,大于根节点的在右边
  3. 这个新插入的节点一定是当前二叉搜索树的叶子节点。
function addNode(root, val) {
    if (!root || val == undefined || root.val === val) {
        return; // !0 也是true
    }
    if (val < root.val) {
        if (root.left) {
            addNode(root.left, val);
        } else {
            root.left = new TreeNode(val);
        }

    } else {
        if (root.right) {
            addNode(root.right, val);
        } else {
            root.right = new TreeNode(val);
        }
    }
}

有了addNode,生成一个二叉搜索树就很简单了。

/**
 *
 *
 * @param {Array} arr
 */
function createBinaryTree(arr) {
    if (!arr || arr.length === 0) {
        return null;
    }
    let root = new TreeNode(arr[0]);
    for (let i = 1; i < arr.length; i++) {
        addNode(root, arr[i]);
    }
    return root;
}

一般来说,直接写代码可能性不高。
可能会考到给你一个数组,让你画出二叉搜索树

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:44:00  更:2021-07-13 17:46:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:37:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码