一、二叉排序树
1. 定义及性质:
二叉排序树又称二叉查找树,它或者是一颗空树,或者具有一下性质的二叉树:
(1)如果左子树不为空,那么左子树上面的所有节点的值都小于它的根节点的值。
(2)如果右子树不为空,那么右子树上面的所有节点的值都大于它的根节点的值。
(3)左右子树也分别为二叉排序树
2. 代码实现:
(1)先定义一个节点类,分别定义节点的权,左节点,右节点,和初始化构造方法
package tree;
public class Node {
//节点类
//节点的权
int data;
//左节点
Node left;
//右节点
Node right;
//构造方法
public Node(int data) {
this.data = data;
this.left = null;
this.right = null;
}
}
(2)编写实现类BinaryTree,手下定义其根节点及其构造方法。
public class BinaryTree {
//二叉排序树
//定义根节点
private Node root;
//构造方法
public BinaryTree() {
root = null;
}
(3)插入节点
首先创建一个新节点,判断头节点是否为空,如果为空则将新节点赋给头节点。
反之定义一个当前节点和父节点,循环遍历查找元素插入的位置,根据二叉排序树的性质可知,插入结点的值小于其根节点的值,就可以将新节点赋给为空的左节点。
反之,当插入节点的值大于根结点的值时,就可以将新节点赋给为空的右节点。
//插入节点
public void insert(int data) {
//创建一个新节点
Node newNode = new Node(data);
//判断头节点为空,将新节点赋给头节点
if(root ==