树、二叉树、查找算法总结

1.思维导图`

2.重要概念的笔记

1.双亲表示法:求父节点方便。

2.孩子表示法:求子节点方便。

3.双亲孩子表示法:求父节点和子节点都很方便。

4.折半查找的时间复杂度:O(log2n)

二叉树:

1..在二叉树的第i层上至多有2^(i-1)个结点(i>0)。

2.深度为k的二叉树至多有2^k-1个结点(k>0)。

3.对于任意一棵二叉树,如果其叶结点为N0,而度数为2的结点总数为N2,则N0=N2+1。

4.具有n个结点的完全二叉树的深度必为 log(2n)+1。

5.对完全二叉树,若从上至下、从左只右编号,则编号为i的节点,其左孩子编号必为2i,其有孩子编号必为2i+1;其双亲的编号必为i/2(i=1时为根 除外)。

将树转化成二叉树(右子树一定为空):
1.加线:在兄弟之间加一连线
2.抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系
3.旋转:以树的根结点为轴心,将整树顺时针转45°
森林转换成二叉树:
1.将各棵树分别转换成二叉树
2.将每棵树的根结点用线相连
3.以第一棵树根结点为二叉树的根

哈希冲突解决方案:

  1. 拉链法:所有有冲突的元素在一条链表上。指针需要额外的空间,故当结点规模较小时,开放定址法较为节省空间,而若将节省的指针空间用来扩大散列表的规模,可使装填因子变小,这又减少了开放定址法中的冲突,从而提高平均查找速度。

  2. 开放定址法:

    线性探测法: 冲突发生时,顺序查看表中下一单元,直到找出一个空单元或查遍全表。

    二次探查法: 冲突发生时,在表的左右进行跳跃式探测,比较灵活

    3.疑难问题及解决方案

    B树的插入与删除:

    先算m-1然后依次插入然后排序插入时>m-1需分裂,然后中间数移至上节点,分裂时分情况找前驱后继来删除与转移。

    平衡二叉树的插入:

    LL:左孩子的左子树上插入结点

    RR:右孩子的右子树上插入节点

    LR:左孩子的右子树上插入节点

    RL:右孩子的左子树上插入节点

posted @ 2020-04-26 21:38  xpss  阅读(99)  评论(0编辑  收藏  举报