Answers:
二叉树:每个节点最多有两片叶子的树
1
/ \
2 3
二进制搜索树:用于搜索。一个二叉树,其中左子节点仅包含值小于父节点的节点,而右子节点仅包含值大于或等于父节点的节点。
2
/ \
1 3
二叉树由节点组成,其中每个节点包含一个“左”指针,一个“右”指针和一个数据元素。“根”指针指向树中的最高节点。左右指针递归地指向两侧的较小“子树”。空指针表示没有元素的二叉树-空树。正式的递归定义是:二叉树不是空的(由空指针表示),还是由单个节点组成,其中左右指针(前面的递归定义)每个都指向二叉树。
二叉搜索树(BST)或“有序二叉树”是一种二叉树,其中的节点按顺序排列:对于每个节点,其左子树中的所有元素都小于节点(<),而所有元素在其右子树中大于节点(>)。
5
/ \
3 6
/ \ \
1 4 9
上面显示的树是二叉搜索树-“根”节点为5,其左子树节点(1、3、4)小于5,其右子树节点(6、9)大于5。递归地,每个子树还必须服从二进制搜索树约束:在(1、3、4)子树中,3是根,1 <3和4> 3。
注意问题中的确切措辞-“二叉树”与“二叉树”不同。
正如以上每个人都对二叉树和二叉树的区别进行了解释,我只是添加了如何测试给定的二叉树是否为二叉树。
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);
}
希望对您有帮助。对不起,如果我偏离主题,我觉得在这里值得一提。
二叉树代表一个数据结构,它是由最高的节点,可以只拥有两个孩子的引用。
另一方面,Binary Search Tree(BST)是Binary Tree数据结构的一种特殊形式,其中每个节点都有一个可比较的值,较小值的子级附加在左侧,较大值的子级附加在右侧。
因此,所有BST都是二叉树,但是只有一些二叉树也可能是BST。通知BST是Binary Tree的子集。
因此,二叉树比二叉搜索树更像是一种通用的数据结构。并且您还必须通知Binary Search Tree是一个排序树,而通用Binary Tree没有这样的规则集。
甲Binary Tree
这是不一个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。
对于二叉树节点没有这样的规则。二叉树节点的唯一规则是有两个孩子,因此它自己解释为什么称其为binary。
二叉树
二叉树可以是具有2个孩子和1个父母的任何东西。它可以实现为链接列表或数组,也可以使用您的自定义API实现。一旦开始向其中添加更具体的规则,它就会变成更专业的树。最常见的已知实现是,在左侧添加较小的节点,在右侧添加较大的节点。
例如,大小为9,高度为3的带标签的二叉树,其根节点的值为2。树是不平衡的,并且未排序。 https://zh.wikipedia.org/wiki/二叉树
例如,在左侧的树中,A有6个子元素{B,C,D,E,F,G}。可以将其转换为右侧的二叉树。
二元搜寻
二进制搜索是一种技术/算法,用于在节点链上查找特定项目。二进制搜索适用于排序数组。
二进制搜索将目标值与数组的中间元素进行比较;如果它们不相等,则消除目标不能位于其中的那一半,并继续搜索剩余的一半直到成功或剩余的一半为空。https://zh.wikipedia.org/wiki/Binary_search_algorithm
一棵代表二进制搜索的树。在此搜索的数组为[20、30、40、50、90、100],目标值为40。
二叉搜索树
这是二叉树的实现之一。这是专门用于搜索的。
二进制搜索树和B树数据结构基于二进制搜索。
二进制搜索树(BST),有时也称为有序或排序的二进制树,是容器的一种特殊类型:在内存中存储“项目”(例如数字,名称等)的数据结构。https://zh.wikipedia.org/wiki/Binary_search_tree
二进制搜索树,大小为9,深度为3,根为8。叶子没有画。
最后是用于比较知名数据结构和算法性能的出色方案:
图片取自Algorithms(第4版)
要检查给定的二叉树是否为二叉树,这里是另一种方法。
以有序方式遍历树(即,左子节点->父节点->右子节点),将遍历的节点数据存储在一个临时变量中,例如temp,然后再存储到temp中,检查当前节点的数据是否高于先前节点的数据。然后打破它,树不是二叉搜索树,否则遍历直到结束。
以下是Java的示例:
public static boolean isBinarySearchTree(Tree root)
{
if(root==null)
return false;
isBinarySearchTree(root.left);
if(tree.data<temp)
return false;
else
temp=tree.data;
isBinarySearchTree(root.right);
return true;
}
外部保持温度变量