12. JavaScript数据结构之二叉树

91 阅读1分钟

二叉树

二叉树的几个特性

  1. 一个二叉树第i层的最大节点数为 2^(i-1), i>=1
  2. 深度为k的二叉树有最大节点总数为 2^k-1, i>=1
  3. 对任何非空二叉树,若m表示叶节点的个数,n是度为2的非叶节点个数,则满足m=n+1

二叉搜索树

二叉搜索树是一颗二叉树,可以为空

如果不为空,满足以下性质

  1. 非空左子树的所有键值小于其根节点的键值
  2. 非空右子树的所有键值大于其根节点的键值
  3. 左,右子树本身也都是二叉搜索树

遍历二叉树

先序遍历

  1. 访问根节点
  2. 先序遍历左子树
  3. 先序遍历右子树

先序.png

中序遍历

  1. 中序遍历左子树
  2. 访问根节点
  3. 中序遍历右子树

中序遍历.png

后序遍历

  1. 后序遍历左子树
  2. 后序遍历右子树
  3. 访问根节点

Snipaste_2022-10-17_21-47-30.png

程序遍历

二叉搜索树的封装

  1. 封装二叉搜索树的构造函数
  2. 封装一个用于保存每一个节点的类Node
  3. 类中包含三个属性:节点对应的key,指向的左子树,指向的右子树
  4. 保存根节点

方法封装

插入节点

  1. 根据数据创建节点
  2. 判断是否为空树
  3. 是则将该节点赋为根节点
  4. 否则判断数据大小,确定寻找左节点还是右节点
  5. 若找到空值,则插入该节点