可视化的二叉查找树

作者: 踢车牛 | 来源:发表于2018-09-30 16:30 被阅读218次

对于程序员来说,算法和数据数据结构绕不开的,本文另辟蹊径,以图示的方式, 着重说明 二叉查找树(BST)相关的算法,想是可视化的东西更适合联想,记忆。

测试链接

tree

主要用到的依赖

  • react
  • webpack
  • d3 (二叉树的展示图)
  • antd

具体实现算法包括

  • BST 的所有路径
  • BST 的节点数
  • 从小到大打印 BST 节点
  • BST 的高度
  • BST 的最小值
  • BST 的最大值
  • 判断二叉树是否为 BST

代码结构

structure
  • components目录 (react组件相关代码)
  • logic目录 (BST的数据结构)

每个算法的主要逻辑

  • BST 的所有路径

    • 为树的前序遍历的应用。
    • 当遍历到一个节点时,先拿到该节点的值存储好,然后遍历左孩子、右孩子。
    • 重复步骤二,直到该节点既无左孩子也无右孩子(叶子)时,把包含该节点的一组路径保存好。
  • BST 的节点数

    • 树的前序遍历的应用。
    • 依树根为第一个节点,遍历左孩子获取左孩子的节点数,遍历右孩子的节点数。
    • 把根节点、左孩子的节点数、右孩子的节点数 相加为总共节点数。
    • 程序中的算法是 把根节点数、左右孩子的节点数用一个变量表示。
  • 从小到大打印 BST 节点

    • 二叉查找树的特点是 左孩子 < 根 < 右孩子,因此为中序遍历的应用。
    • 程序中对应就是遍历左孩子、根、右孩子。
  • BST 的高度

    • 思想就是:在左子树的高度、右子树的高度中取最大值,然后加上树根的高度(1), 为树的高度。
    • 对应程序是 初始化左子树、右子树高度均为 0,如果左根存在遍历左根,同理右根,最后返回最大值。
  • BST 的最小值、最大值

    • 这两个算法比较简单,程序中分别使用了两种算法,一种递归,一种非递归。
  • 判断二叉树是否为 BST

    • 树的前序遍历的应用。
    • 这里要用到求最小值、最大值两个函数。
    • 对于任何一个节点,如果在左子树的最大值大于根,非 BST,右子树的最小值小于根,非 BST。
    • 递归该二叉树的左子树、右子树。

具体代码逻辑

以上为 该算法的所有内容,具体代码位置
欢迎 star。

相关文章

  • 极客时间数据结构与算法之美笔记25~26

    二叉树到二叉查找树,是为了查找数据的效率接近logN。 二叉查找树到平衡二叉查找树,是为了防止二叉查找树沦为链表。...

  • 二叉查找树

    1)二叉查找树是什么?2)二叉查找树的插入、删除、查找?3)Go代码实现 一、二叉查找树是什么?二叉查找树(BST...

  • 红黑树

    红黑树的本质就是一棵二叉查找树,所以先从二叉查找树来了解起。 二叉查找树 二叉查找树又称有序二叉树,具有以下特性:...

  • 99-数据结构和算法

    难点:二叉树的遍历 红黑树 图的遍历 二叉查找树二叉查找树(binary search tree),二叉查找树在二...

  • 二叉查找树

    二叉查找树,又称二叉搜索树 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: ...

  • 11-二叉查找树

    二叉查找树 1.什么是二叉查找树? 二叉查找树是一种支持数据动态的插入,删除,查找的数据结构。 2.二叉查找树的设...

  • 二叉树 堆 2019-04-17

    二叉树 实现一个二叉查找树,并且支持插入、删除、查找操作 实现查找二叉查找树中某个节点的后继、前驱节点 实现二叉树...

  • 6. 二叉树创建-查找

    1. 递归方式实现二叉树的构建2. 树、二叉树、二叉查找树3. 二叉树排序树的理解4. 二叉查找树5. 二叉树的查找

  • 17张图带你解析红黑树的原理!保证你能看懂!

    二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Bin...

  • 浅谈AVL树,红黑树,B树,B+树原理及应用

    二叉查找树 简介 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: 任意节点左...

网友评论

    本文标题:可视化的二叉查找树

    本文链接:https://www.haomeiwen.com/subject/gubwoftx.html