有人能举例说明二叉树和二叉搜索树的区别吗?
当前回答
二叉树
二叉树可以是任何有两个子结点和一个父结点的树。它可以实现为链表或数组,或与您的自定义API。一旦你开始向它添加更具体的规则,它就会变得更专门化。最常见的实现是,在左边添加较小的节点,在右边添加较大的节点。
例如,一个大小为9,高度为3的标记二叉树,其根节点的值为2。树是不平衡的,没有排序。 https://en.wikipedia.org/wiki/Binary_tree
例如,在左边的树中,A有6个子结点{B,C,D,E,F,G}。它可以转化成右边的二叉树。
二分查找
二分搜索是一种用于在节点链上查找特定项的技术/算法。二分搜索适用于已排序的数组。
二叉搜索将目标值与数组的中间元素进行比较;如果它们不相等,则消除目标不能说谎的那一半,继续搜索剩下的一半,直到成功或剩下的一半为空。https://en.wikipedia.org/wiki/Binary_search_algorithm
表示二叉搜索的树。这里搜索的数组是[20,30,40,50,90,100],目标值是40。
二叉搜索树
这是二叉树的一种实现。这是专门用于搜索的。
二叉搜索树和b树数据结构都是基于二叉搜索的。
二叉搜索树(BST),有时称为有序或排序二叉树,是一种特殊类型的容器:在内存中存储“项”(如数字、名称等)的数据结构。https://en.wikipedia.org/wiki/Binary_search_tree
一个大小为9,深度为3,根为8的二叉搜索树。树叶没有被抽干。
最后是一个比较知名数据结构和算法性能的模式:
图片取自《算法(第4版)》
其他回答
二叉树是具有两个子树(左子和右子)的一种特殊形式。 它是简单地用树形结构表示数据
二叉搜索树(BST)是一种特殊类型的二叉树,它满足以下条件:
左子节点小于其父节点 右子节点大于其父节点
二叉树
二叉树可以是任何有两个子结点和一个父结点的树。它可以实现为链表或数组,或与您的自定义API。一旦你开始向它添加更具体的规则,它就会变得更专门化。最常见的实现是,在左边添加较小的节点,在右边添加较大的节点。
例如,一个大小为9,高度为3的标记二叉树,其根节点的值为2。树是不平衡的,没有排序。 https://en.wikipedia.org/wiki/Binary_tree
例如,在左边的树中,A有6个子结点{B,C,D,E,F,G}。它可以转化成右边的二叉树。
二分查找
二分搜索是一种用于在节点链上查找特定项的技术/算法。二分搜索适用于已排序的数组。
二叉搜索将目标值与数组的中间元素进行比较;如果它们不相等,则消除目标不能说谎的那一半,继续搜索剩下的一半,直到成功或剩下的一半为空。https://en.wikipedia.org/wiki/Binary_search_algorithm
表示二叉搜索的树。这里搜索的数组是[20,30,40,50,90,100],目标值是40。
二叉搜索树
这是二叉树的一种实现。这是专门用于搜索的。
二叉搜索树和b树数据结构都是基于二叉搜索的。
二叉搜索树(BST),有时称为有序或排序二叉树,是一种特殊类型的容器:在内存中存储“项”(如数字、名称等)的数据结构。https://en.wikipedia.org/wiki/Binary_search_tree
一个大小为9,深度为3,根为8的二叉搜索树。树叶没有被抽干。
最后是一个比较知名数据结构和算法性能的模式:
图片取自《算法(第4版)》
二叉搜索树是一种特殊的二叉树,它表现出如下性质:对于任意节点n, n的左子树中每个后代节点的值都小于n,而右子树中每个后代节点的值都大于n。
二叉搜索树:当对二叉树进行序遍历时,您将得到插入项的排序值 二叉树:在任何遍历中都没有找到排序的顺序
A binary tree is made of nodes, where each node contains a "left" pointer, a "right" pointer, and a data element. The "root" pointer points to the topmost node in the tree. The left and right pointers recursively point to smaller "subtrees" on either side. A null pointer represents a binary tree with no elements -- the empty tree. The formal recursive definition is: a binary tree is either empty (represented by a null pointer), or is made of a single node, where the left and right pointers (recursive definition ahead) each point to a binary tree.
二叉搜索树(BST)或“有序二叉树”是一种二叉树,其中节点是按顺序排列的:对于每个节点,其左子树中的所有元素都小于该节点(<),而其右子树中的所有元素都大于该节点(>)。
5
/ \
3 6
/ \ \
1 4 9
上面所示的树是一棵二叉搜索树——“根”节点为5,其左子树节点(1,3,4)< 5,右子树节点(6,9)为> 5。递归地,每个子树也必须服从二叉搜索树约束:在(1,3,4)子树中,3是根,1 < 3和4 > 3。
注意问题中的确切措辞——“二叉搜索树”不同于“二叉树”。
推荐文章
- set()是如何实现的?
- .Net数据结构:ArrayList, List, HashTable, Dictionary, SortedList, SortedDictionary—速度,内存,以及何时使用每个?
- 为什么std::map被实现为红黑树?
- 实现嵌套字典的最佳方法是什么?
- 段树、区间树、二叉索引树和范围树之间有什么区别?
- 为什么我应该使用Deque而不是Stack?
- .Net中的优先级队列
- 为什么java.util.Set没有get(int index)?
- Python集vs列表
- 地图和字典的区别是什么?
- 跳跃表vs.二叉搜索树
- 谷歌Chrome显示JSON AJAX响应树,而不是纯文本
- 如何将列表转换为地图?
- 为什么我们没有一个数据结构
- 树数据结构