有人能举例说明二叉树和二叉搜索树的区别吗?
当前回答
二叉搜索树是一种特殊的二叉树,它表现出如下性质:对于任意节点n, n的左子树中每个后代节点的值都小于n,而右子树中每个后代节点的值都大于n。
其他回答
二叉树是一种树,其中每个节点最多可以有2个子节点。
二叉搜索树是对它的进一步修改,赋予父结点和两个子结点一定的关系。因为,只有两个子结点,即左子结点和右子结点;关系式定义如下:
左子<=父<=右子
其实就是这么简单。
正如上面每个人都解释了二叉树和二叉搜索树的区别,我只是补充如何测试给定的二叉树是否是二叉搜索树。
boolean b = new Sample().isBinarySearchTree(n1, Integer.MIN_VALUE, Integer.MAX_VALUE);
.......
.......
.......
public boolean isBinarySearchTree(TreeNode node, int min, int max)
{
if(node == null)
{
return true;
}
boolean left = isBinarySearchTree(node.getLeft(), min, node.getValue());
boolean right = isBinarySearchTree(node.getRight(), node.getValue(), max);
return left && right && (node.getValue()<max) && (node.getValue()>=min);
}
希望对你有所帮助。抱歉,如果我转移了话题,因为我觉得这里值得一提。
当且仅当任意节点的最大子节点数为2时,树可以被称为二叉树。
当且仅当任意节点的最大子节点数为2且左子节点总是小于右子节点时,树可以被称为二叉搜索树。
在二叉树中,每个节点有两个子节点:左节点和右节点。 二叉搜索树是一种特殊的树,其中节点被排序,左节点比父节点小,左节点比父节点大。 二叉树允许重复值,二叉搜索树不允许重复值,而且在二叉搜索树中执行任何类型的操作都比在二叉树中更快,因为BST是排序的
二叉搜索树是一种特殊的二叉树,它表现出如下性质:对于任意节点n, n的左子树中每个后代节点的值都小于n,而右子树中每个后代节点的值都大于n。
推荐文章
- HyperLogLog算法是如何工作的?
- 二叉搜索树的定义中允许重复的键吗?
- 如何有效地清除std::queue ?
- 非递归深度优先搜索算法
- 如何在Java中打印二叉树图?
- 堆与二叉搜索树(BST)
- 多维数组如何在内存中格式化?
- “冰冻词典”是什么?
- 在javascript中从平面数组构建树数组
- 为什么我们使用数组而不是其他数据结构?
- 在Java中从HashMap获取键
- 数组与链表
- set()是如何实现的?
- .Net数据结构:ArrayList, List, HashTable, Dictionary, SortedList, SortedDictionary—速度,内存,以及何时使用每个?
- 为什么std::map被实现为红黑树?