第一篇:数据结构与算法

链表:

快慢指针:一个慢指针(一次走一步)一个快指针(一次走两步)

应用:判断链表是否有环,判断环的入口位置,求中位数,求倒数第k位等

判断链表是否有环:直接一快一慢去走,如果能碰到,那么说明有环,如果快指针走到NULL,那么无环

判断环入口位置:一快一慢走去,如果碰到了,那么将,慢指针放回入口,然后快慢指针同时步长为1,相遇的即为环入口

求中位数:快指针到重点,慢指针所在位置即为中位数,因为步长是他的两倍

树:

二叉排序树:也称为二叉查找树,遵从一个规则,左子树的所有节点的值都比当前节点值小,右子树所有的值都比当前节点的值大

然后直接每次插入一个节点直接去找就好了,但是这样建树会有最坏情况,有可能建出左斜树或者右斜树,复杂度和数组查找相似

扫描二维码关注公众号,回复: 8803636 查看本文章

平衡二叉树:基于二叉排序树的所有要求,因为二叉排序树有建树可能不完美的情况,所以,又有了平衡二叉树,前提就是必须书二叉排序树

平衡二叉树和二叉排序树的不同就是,平衡树多了平衡因子,当前节点的左右子树高度之差要小于等于1,所以平衡因子的值在【-1,1】之间

平衡二叉树构造的核心要点就是在于插入节点的时候如何把它给转换成平衡二叉树

参考博文:https://blog.csdn.net/isunbin/article/details/81707606

针对化成平衡二叉树的时候有四种情况

LL  LR  RR RL 

猜你喜欢

转载自www.cnblogs.com/Lis-/p/12230927.html