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
有兴趣的朋友可以看下