• javascript二叉树相关的知识


    作者我呢,在学这个之前,也是在学习了C语言的数据结构和算法的一些东西,然后我去看这个javascript,因为我感觉那个比较专业一点,好了,我们一起来看一下,什么是二叉树

    介绍一下什么是树(tree),抽象一下,树是不是有很多节点,一棵树至少会有一个节点(根节点),

    当然也可以是空树

    • 树由节点组成,而节点的定义就是:一个数据、两个指针(如果有节点就指向节点、没有节点就指向null)
    • 当然这里注意,树也有深度
    • 叶子深度
    • 子节点长度

    二叉树中还有一种特殊的二叉树:二叉查找树(binary search tree)

    • 定义:当前根节点的左边全部比根节点小,当前根节点的右边全部比根节点大。
    • 明眼人可以看出,这对我们来找一个数是非常方便快捷的

    如何用js代码写一个二叉查找树呢?

    function Node(key) {
      this.key = key;
      this.left = null;
      this.right = null;
    }
    function BinarySearchTree() {
      this.root = null;
    }
    // 查询树排序插入
    function insertNode(node, newNode) {
      // 如果新节点值小于当前节点值,则插入左子节点
      if (newNode.key < node.key) {
        if (node.left === null) {
          node.left = newNode;
        } else {
          insertNode(node.left, newNode);
        }
      } else {
        // 如果新节点值大于当前节点值,则插入右子节点
        if (node.right === null) {
          node.right = newNode;
        } else {
          insertNode(node.right, newNode);
        }
      }
    }
    // 插入
    BinarySearchTree.prototype.insert = function (key) {
      let newNode = new Node(key);
      if (this.root === null) {
        this.root = newNode;
      } else {
        insertNode(this.root, newNode);
      }
    }

    let tree = new BinarySearchTree()
    tree.insert(19)
    tree.insert(10)
    tree.insert(20)
    tree.insert(23)
    tree.insert(1)
    tree.insert(18)
    console.log(tree)

  • 相关阅读:
    令人疑惑的Promise相关问题
    【毕业设计】深度学习 python opencv 动物识别与检测
    2022官方发布辐轮王土拨鼠全球十大顶级公路自行车品牌排行榜
    AR应用的开发流程
    priority_queue
    我辞掉程序员的工作,体验了半年的自驾游生活
    筛斗数据清洗技术在客户需求分析中的应用
    微软: 用于文本到语音合成(TTS)的语言模型方法VALL-E
    CSS 响应式设计:网格视图
    生成二维坐标数组numpy.meshgrid()
  • 原文地址:https://blog.csdn.net/yyh231366/article/details/126644287