有人能举例说明二叉树和二叉搜索树的区别吗?
当前回答
二叉树表示一种数据结构,它由只能有两个子引用的节点组成。
另一方面,二叉搜索树(BST)是一种特殊形式的二叉树数据结构,其中每个节点都有一个可比较的值,较小的值子连接到左边,较大的值子连接到右边。
因此,所有的BST都是二叉树,但只有一些二叉树也是BST。通知BST是二叉树的一个子集。
因此,二叉树比二叉搜索树更像是一种通用的数据结构。你还需要知道二叉搜索树是一棵排序树而一般的二叉树没有这样的规则。
二叉树
二叉树不是BST;
5
/ \
/ \
9 2
/ \ / \
15 17 19 21
二叉搜索树(排序树)
二叉搜索树也是二叉树;
50
/ \
/ \
25 75
/ \ / \
20 30 70 80
二叉搜索树节点属性
还要通知BST中的任何父节点;
所有左边节点的值都小于父节点的值。在上面的例子中,值为{20,25,30}的节点都位于50的左边(左后代),它们都小于50。 所有正确节点的值都大于父节点的值。在上面的例子中,值为{70,75,80}的节点都位于50的右边(右后代),它们都大于50。
二叉树节点没有这样的规则。二叉树节点的唯一规则是有两个子结点,所以它自己解释了为什么叫二叉树。
其他回答
二叉树是具有两个子树(左子和右子)的一种特殊形式。 它是简单地用树形结构表示数据
二叉搜索树(BST)是一种特殊类型的二叉树,它满足以下条件:
左子节点小于其父节点 右子节点大于其父节点
在二叉搜索树中,所有节点都按照特定的顺序排列——根节点左侧的节点的值小于根节点,节点右侧的所有节点的值大于根节点的值。
正如上面每个人都解释了二叉树和二叉搜索树的区别,我只是补充如何测试给定的二叉树是否是二叉搜索树。
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且左子节点总是小于右子节点时,树可以被称为二叉搜索树。