💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 介绍 ## 特点 二叉树: `最多只有两个` 子节点的树。度为2的数。 ![](https://img.kancloud.cn/b4/74/b474cd10635fa66b483b88c0b9c629bd_1418x898.png) ## 分类 二叉树分为: - 满二叉树 - 完全二叉树 - 平衡二叉树 - 二叉搜索树 ### 满二叉树 除了最后一层叶子结构之外,其他节点都有两个子节点的树。 ![](https://img.kancloud.cn/6c/a9/6ca9ec1917db04b1b78e2607ad259caa_366x232.png) ### 完全二叉树 除了最后缺的几个节点不考虑之外,剩下的节点和一个满二叉结构节点数完全相同。 ![](https://img.kancloud.cn/4c/f0/4cf03c460fda250401998c1a9a67daf4_790x364.png) ### 平衡二叉树 任一节点左右子节点的 `高度差` 小于等于 |1|。 节点高度:从这个节点到叶子节点最多的边数。 ![](https://img.kancloud.cn/93/22/93229219901e21e810caef18799c72d9_796x506.png) ### 二叉搜索树(BST-Binary Search Tree) 规则: 1. 任意一个节点的左子节点都小于这个节点 2. 任意一个节点的右子节点都大于这个节点 ![](https://img.kancloud.cn/3a/2f/3a2f485a68582d4cb5786ef6a874c08a_758x552.png) ## 存储方式 二叉树的存储方式: - 顺序存储(用数组) - 链式存储(用链表) ### 链式存储 每个节点都有 左、右 两个指针,指向左右两个子节点。 ![](https://img.kancloud.cn/25/09/25092e010b3eedc751418fa9f04b4c4f_936x708.png) 节点类: ~~~ class Node { construct(data) { this.data = data // 数据 this.left = null // 左子节点 this.right = null // 右子节点 } } ~~~ ### 顺序存储 使用数组存储二叉树。 存储完之后必须要满公式: 情况一、(如果根节点保存在 0 这个下标时的公式) 第i个节点的左子节点下标:2i+1 第i个节点的右子节点下标:2i+2 第i个节点的父节点下标;Math.floor((i-1)/2) 情况二、根节点保存在1这个位置时: ![](https://img.kancloud.cn/72/0c/720cdc446cc85cec73da370a66751d22_894x578.png) 顺序存储比较适合 `完全二叉树`,否则会比较浪费空间(有很多空位): ![](https://img.kancloud.cn/a9/2e/a92e9c605aa3ac9266429681aa605e75_718x556.png)