Java-各种树

专业词
  • 深度;从根节点到最底层的距离(节点的个数)叫深度;

1.二叉树

  • 概念:每个节点最多只能有两个子节点的叫二叉树满二叉树
  • 二叉树的所有叶子节点都在最后一层,并且节点总数=2^n - 1 ,则称为满二叉树完全二叉树
  • 该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子结点在左边连续,倒数第二层的叶子结点在右边连续,我们称之为完全二叉树。

遍历二叉树

前序,中序,后序三种遍历方式

  • 前序遍历:先输出父节点,在遍历左子树和右子树;
  • 中序遍历, 先遍历左子树, 再输出父节点, 再遍历右子树
  • 后序遍历, 先遍历左子树, 再遍历右子树, 最后输出父节点

二叉搜索数(使用的是二分查找算法的树)

特性

  • 每个节点最多拥有两个子节点,即每个节点都是一个小的二叉树
  • 比父节点小的放左边
  • 比父节点大的放右边
优点:拥有链表快速删除,增加的特性,同时具有快速查找的优势
缺点:由于数据原因,可能会造成左右两边深度过大,不平衡。甚至可能变成斜树,即退化成链表。

平衡二叉树(AVL树)

  • 它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,超过1就会失衡 。并且左右两个子树都是一棵平衡二叉树。

添加节点

  • 往平衡二叉树中添加节点很可能会导致二叉树失去平衡,所以我们需要在每次插入节点后进行平衡的维护操作。插入节点破坏平衡性有如下四种情况:
右右旋转

左左旋转

左右旋转

右左旋转

红黑树

出现原因 由于平衡二叉树严格的平衡条件,频繁 的插入,删除操作,旋转次数变多,也会影响增加删除效率

目的:为了减少删除和插入的频率,就引入了红黑树的概念;

红黑在AVL树基础上增加四条,变更一条规则。
  • 节点只有红黑两色。
  • 根节点是黑色
  • 所有的叶子节点都是黑色,()都是空节点。
  • 根节点到叶子节点的一条路径上不能有连续的红色节点。
  • 变更 深度差不能超过1,改为从任意节点出发,到每个子节点的黑色节点深度必须相等。
目的:利用红黑两色的变换(变色),去替代一部分旋转操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值