Java-各种树
专业词
- 深度;从根节点到最底层的距离(节点的个数)叫深度;
1.二叉树
- 概念:每个节点最多只能有两个子节点的叫二叉树
满二叉树- 二叉树的所有叶子节点都在最后一层,并且节点总数=2^n - 1 ,则称为满二叉树
完全二叉树- 该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子结点在左边连续,倒数第二层的叶子结点在右边连续,我们称之为完全二叉树。
遍历二叉树
前序,中序,后序三种遍历方式
- 前序遍历:先输出父节点,在遍历左子树和右子树;
- 中序遍历, 先遍历左子树, 再输出父节点, 再遍历右子树
- 后序遍历, 先遍历左子树, 再遍历右子树, 最后输出父节点
二叉搜索数(使用的是二分查找算法的树)
特性
- 每个节点最多拥有两个子节点,即每个节点都是一个小的二叉树
- 比父节点小的放左边
- 比父节点大的放右边
优点:拥有链表快速删除,增加的特性,同时具有快速查找的优势
缺点:由于数据原因,可能会造成左右两边深度过大,不平衡。甚至可能变成斜树,即退化成链表。
平衡二叉树(AVL树)
- 它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,超过1就会失衡 。并且左右两个子树都是一棵平衡二叉树。
添加节点
- 往平衡二叉树中添加节点很可能会导致二叉树失去平衡,所以我们需要在每次插入节点后进行平衡的维护操作。插入节点破坏平衡性有如下四种情况:
右右旋转
左左旋转
左右旋转
右左旋转
红黑树
出现原因 由于平衡二叉树严格的平衡条件,频繁 的插入,删除操作,旋转次数变多,也会影响增加删除效率
目的:为了减少删除和插入的频率,就引入了红黑树的概念;
红黑在AVL树基础上增加四条,变更一条规则。
- 节点只有红黑两色。
- 根节点是黑色
- 所有的叶子节点都是黑色,()都是空节点。
- 根节点到叶子节点的一条路径上不能有连续的红色节点。
- 变更 深度差不能超过1,改为从任意节点出发,到每个子节点的黑色节点深度必须相等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App