二叉树总结(含代码)

二叉树特点

1.对于每个节点最大孩子树数量不超过2
2.对任意节点有且仅有一个父节点
3.整棵树只有一个根

完全二叉树

只有最底层和次底层有叶子节点,且最底层叶子节点在最左边

满二叉树

除最后一层外,非叶子节点每个节点都有两个子节点;
总节点数为2k-1(k为层数);每层节点数为2k-1;

搜索二叉树

左小右大(左孩子树比根小,右孩子树比根大)

平衡二叉树

任意一个节点的左右子树高度差不大于1
平衡二叉树的缺点:有序数组的插入调整次数多,耗内存,损伤CPU,对计算机性能有影响

平衡二叉树的平衡旋转示例图:
在这里插入图片描述
在这里插入图片描述

红黑树

1.心(根)是黑的
2.j节点要么红要么黑 (节点只有这两种颜色)
3.两颗红心不能在一起 (不能有两个连续红色节点)
4.所有路径经过黑色节点数目一致
5.近似平衡的二叉树 (实现继续保持红黑树的操作相对简单)

哈夫曼树

给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。对任意给定文本,哈夫曼树和哈夫曼编码是不唯一的,但带权路径长度的总和是一定的。
定长编码:使用一定长度的符号编码
哈夫曼编码优点:减少空间使用,避免二义性

二叉树的遍历

遍历一定要不重不漏
深度遍历:一条路走到黑,不撞南墙不回头
包括: 前序遍历(根左右) 中序遍历(左 根 右) 后序遍历(左 右 根)
广度遍历 :远交近攻 层次遍历(从上至下,从左至右)
时间复杂度:O(n)
空间复杂度:O(n)

代码实现参考地址:
递归方法:https://blog.csdn.net/flystar27/article/details/119789125?spm=1001.2014.3001.5501
迭代方法:https://blog.csdn.net/flystar27/article/details/119789565?spm=1001.2014.3001.5501

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值