- 什么是二叉排序树?官方的定义如下:
1)对于一棵树,若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
3)左、右子树也分别为二叉排序树;
4) 没有键值相等的结点。 - 举个例子:如下图
可以发现满足上述条件,所以可以称之一颗二叉排序树。 - 如何用代码构建一颗二叉树呢? 往下看
-
代码实现
我们来通过其特点随机生成一颗二叉排序树
/**
* 二叉树结点
*/
public class TreeNode {
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
public TreeNode(int val) {
this.val = val;
}
}
//构建二叉排序树
public static TreeNode buildSortedTree(TreeNode root, TreeNode newNode){
if(root == null)return newNode;
if(newNode.val == root.val)return root;
if(newNode.val < root.val){
root.left = buildSortedTree(root.left,newNode);
}else {
root.right = buildSortedTree(root.right,newNode);
}
return root;
}
public class Main1 {
public static void main(String[] args) {
TreeNode root = null;
for (int i = 0; i < 10; i ++){
int random = (int)(Math.random()*100);
TreeNode node = new TreeNode(random);
root = buildSortedTree(root,node);
}
System.out.println("完成!"); //debug查看一下
}
生成结果:
我们发现成功的随机生成了一颗二叉排序树