极客时间-算法训练营 学习笔记 2

一  序

    本文属于极客时间-算法训练营 学习笔记。

二树

作为铺垫,覃超老师先回顾了上节课的链表的特点。访问慢。跳表对他进行加速。如果吧一个指向延伸为多个指向,就有了树的概念。

看图可知,有些概念:根节点,子节点,关系:父子,兄弟,层级:level,左右,子树等。不展开。

树跟图的区别就是有没有环。

关于树的发散引申:

1, 斐波那契数列递归:本身扩展开就是状态树。

2. 实际生活中:以棋类为代表,从哪个第一颗棋子开始,不断的扩散,直到叶子节点(终态:赢、输、和),从树状空间寻求最优解。

树的遍历

树的遍历通常方式就是递归。简洁。

三 二叉搜索树

3.1 常见操作:

搜索

插入

删除:

时间复杂度为O(logN).

搜索的过程,利用了有序的特点。先和根节点相比,每次能减少一半的搜索量,所以时间复杂度跟二分查找一样。

插入的过程:找到节点应该存在的位置,

删除:

 a、叶子节点的删除

 b、根节点或者某子树的根节点(一般情况下找右子树中第一个和此节点相近的节点替换)

这里文字看起来不如看视频中动画容易理解。

下边为特殊情况:时间复杂度不是O(logn),   而是O(N)~ 相当于链表

猜你喜欢

转载自blog.csdn.net/bohu83/article/details/107062508
今日推荐