algorithm
  • README
  • 算法题目
    • Page 1
  • 算法基础
    • 堆(大/小顶堆 、优先队列)
      • swift
      • js
      • C++
    • 哈希表(HashTable)
      • 线性探测
        • 稠密哈希表
        • 密集探测哈希表vs线性探测哈希表
      • C拉链法
        • 拉链法是否需要根据负载因子扩容?
      • set的实现
      • map的实现
    • 二叉树
      • 类型
        • AVL树和红黑树的关系与区别比较
      • 存储方式
      • 遍历
        • 前中后序遍历(深度)
          • 递归方式
          • 迭代法
        • 层次遍历(广度)
      • 二叉搜索树
        • 基本概念
        • 代码实现
      • AVL树
        • 基本概念
        • 代码实现
        • 疑问
          • AVL为什么LL的时候右转呢?
          • AVL树中的LR的情况
          • AVL树的调整
          • 删除节点的逻辑
      • 红黑树
        • 基本概念
        • 代码实现
        • 疑问
          • 红黑树和AVL的关系与区别
          • 红黑树和哈希表的关系与区别
          • 为什么有红黑树,比AVL优势在哪里?
    • 运算符
      • 交换两个数(不用临时变量)
  • leetcode结构
    • Javascript
      • 优先队列
    • C++
  • 公司面试题目
    • 汇丰银行
      • 跑步同一个脚印问题
      • 销售系统问题
Powered by GitBook
On this page
  1. 算法基础

二叉树

Previousmap的实现Next类型

Last updated 7 months ago

1. 基本概念

  • 定义:二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。

  • 节点:树的基本单元,包含数据和指向子节点的指针。

  • 根节点:树的最上层节点,没有父节点。

  • 叶子节点:没有子节点的节点。

2

  • 完全二叉树:除了最后一层外,每一层都被完全填满,且最后一层的节点都集中在左侧。

  • 满二叉树:每个节点都有两个子节点,且所有叶子节点都在同一层。

  • 平衡二叉树:任何节点的两个子树的高度差不超过1。

  • 二叉搜索树(BST 、 Binary Search Tree):对于每个节点,左子树的所有节点值小于该节点,右子树的所有节点值大于该节点。

  • 堆:(大顶堆、小顶堆)其实就是一个二叉树

顺序存储方式(数组) —— 完全二叉树、满二叉树

链式存储方式 —— 一般二叉树

  • 前序遍历(根-左-右):首先访问根节点,然后遍历左子树,最后遍历右子树。

  • 中序遍历(左-根-右):首先遍历左子树,然后访问根节点,最后遍历右子树。

  • 后序遍历(左-右-根):首先遍历左子树,然后遍历右子树,最后访问根节点。

  • 层序遍历:按层级逐层遍历,从上到下,从左到右。

5. 应用

  • 表达式树:用于表示算术表达式。

  • 搜索算法:二叉搜索树可用于高效查找。

  • 优先队列:可以用堆实现,堆是一种特殊的二叉树。

  • 数据压缩:如霍夫曼编码使用二叉树进行编码。

6. 基本操作

  • 插入:在合适的位置插入新节点。

  • 删除:根据节点的情况(叶子节点、有一个子节点或有两个子节点)进行不同的删除操作。

  • 查找:在二叉搜索树中,可以利用其特性高效查找节点。

4.

. 类型
3. 存储方式
遍历方法