数组 链表 二叉树
数组
数组特点;
1.内存地址连续
2.可以通过下标的成员访问,下标访问性能高
3.增删操作带来更大的性能消耗(保证数据的越界问题,需动态扩容)
链表
链表是线性的顺序存储数据,只是在内存地址上是不连续的,每个节点里保存到下一个节点的指针。
单向链表
双向链表
二叉树
二叉树:每个子节点只有两个节点的树,每个节点至多拥有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。
二叉查找树也成为有序二叉查找树,满足二叉查找树的一般性质:
1.任意节点的左子树不为空,则左子树的值均小于根节点的值
2.任意节点的右子树不为空,则右子树的值均大于根节点的值
3.任意节点的左右子树也分别是二叉查找树
4.没有键值相等的节点
遍历操作
三种遍历规则:
前序遍历:先访问根节点,再访问左节点,最后访问右节点(根-左-右)
中序遍历:先访问左节点,再访问根节点,最后访问右节点(左-根-右)
后序遍历:先访问左节点,再访问右节点,最后访问根节点(左-右-根)
前序遍历:4 2 1 3 2.5 6 5 5.5 7
中序遍历:1 2 2.5 3 4 5 5.5 6 7
后序遍历:1 2.5 3 2 5 5.5 7 6 4
查找前驱节点:小于当前节点的最大值
查找后驱节点:大于当前节点的最小值
删除节点
二叉树中删除节点本质上就是找前驱接待你或者后继节点来替代