算法刻意练习之树、二叉树、二叉搜索树
1 树 Tree
1.1 特点
(1)树 Tree:
1.2 演示
(1)示例
2 二叉树 Binary Tree
2.1 特点
(1)二叉树 Binary Tree:
2.2 演示
(1)构造
(2)示例
(3)分类
2.3 二叉树遍历
(1)前序遍历( Pre-order ) : 根 - 左 - 右;
(2)中序遍历( In-order ) : 左 - 根 - 右;
(3)后序遍历( Post-order ) : 左 - 右 - 根;
(4)模板
3 图 Graph
3.1 特点
(1)树和图的区别:树没有环,图的节点有环
3.2 演示
(1)主要API
(2)示例
3.3 总结
(1)Linked List是特殊化的 Tree;Tree是特殊化的 Graph;
4 二叉搜索树 Binary Search Tree
4.1 特点
(1)二叉搜索树,也称二叉排序树、有序二叉树(Ordered Binary Tree)、排序二叉树(Sorted Binary Tree),是指一棵空树或者具有下列性质的二叉树:
- 左子树上所有结点的值均小于它的根结点的值;
- 右子树上所有结点的值均大于它的根结点的值;
- 以此类推:左、右子树也分别为二叉查找树。 (这就是 重复性!)
(2)中序遍历结果:升序排列;一般来说我们会把树变得有序,这样才有树存在的意义,否则就跟普通链表一样了。普通的没有任何状态的树,查找节点需要遍历整棵树,时间复杂度是O(n)。
4.2 演示
(1)主要API
(2)示例
4.3 常见操作
(1)查询 O(logn);
(2)插入新节点(创建) O(logn);
(3)删除 O(logn);
(4)极端情况,树是一根棍子,退化为了链表,所以查找是 O(n);
(5)二叉搜索树Demo;