Tree, Binary Tree, Binary Search Tree
树的结构其实跟链表很相似,区别就是,树的一个节点可以指向多个其他节点,下图是一个二叉树实例
总结:LinkedList就是特殊化的Tree
Graph
图和树的区别在于,树是没有环的图
总结:Tree就是特殊化的Graph
Binary Search Tree
树的重要实现是二叉搜索树
时间复杂度
访问,搜索,插入,删除的平均时间复杂度都是O(logN)
二叉搜索树的退化
退化概念:二叉搜索树只有一边的子树,所有子树都只有左子树或者都只有右子树,这时候树就退化成为一条链表,时间复杂度降至O(N)
解决办法:使用平衡二叉树,如红黑树,Splay Tree,AVL Tree,KD Tree
Java和C++标准库中的二叉搜索树都是用红黑树来实现的
红黑树的简介:https://blog.csdn.net/v_JULY_v/article/details/6105630
有兴趣的朋友可以看下