二叉排序树的创建与维护
问题描述:完成二叉排序树的创建、查找、插入和删除操作。
要求:
给定序列{7,2,11,5,9,3,6,15,8,10},以其元素作为结点的数据域,创建一棵二叉排序树,输出中序遍历该BST的结果序列。
在该二叉排序树中查找值为10、20的结点,输出“查找成功”或“查找失败”的消息提示。
在该二叉排序树中执行删除操作,即分别删除值为3、2、9的结点,并保证操作之后的树仍为二叉排序树。
每个方法应有必要的注释,在课程设计论文中有流程图。
public class BinarySortTree {
/**
* 根结点
*/
private TreeNode rootNode;
/**
* 获取rootNode
* @return
*/
public TreeNode getRootNode() {
return this.rootNode;
}
/**
* 创建二叉排序树 的第一种方法(通过insertBST创建)
* @param array
* @return
*/
public void createBinarySortTree1(int[] array) {
for (int i = 0; i <array.length; i++) {
if (!insertBST(array[i])) {
System.out.println("已存在" + array[i] + ",不再插入二叉排序树");
}
}
}
/**
* 创建二叉排序树 的第二种方法
* @param array
* @return
*/
public void createBinarySortTree2(int[] array) {
for (int i = 0; i < array.length; i++) {
if (i == 0) {
rootNode = new TreeNode(array[i]);
continue;
}
TreeNode node = rootNode;
while (true) {
if (array[i] < node.getData()) {
if (node.getLchild() == null) {
node.setLchild(new TreeNode(array[i]));
break;