JAVA递归实现BST,求大神帮着改改

nn970510 2016-12-12 01:18:57
要求JAVA递归实现BST二叉树的搜索,插入和删除。代码实在是不知道哪里错了求帮着改改。Main就不贴出来了
代码:

*
* BinaryTree.java
*
public abstract class BinaryTree<E> implements Iterable<E> {
protected class Node<T> {
protected Node(T data) {
this.data = data;
}
protected T data;
protected Node<T> left;
protected Node<T> right;
}
public abstract void insert(E data);
public abstract void remove(E data);
public abstract boolean search(E data);
protected Node<E> root;
}
*
* BinarySearchTree.java
*
import java.util.Iterator;
public class BinarySearchTree<E extends Comparable<? super E>> extends BinaryTree<E> {
private Node<E> findIOP(Node<E> curr) {
for (curr = curr.left; curr.right != null; curr = curr.right);
eturn curr;
}
public void insert(E data) {
Node<E> temp = new Node<E>(data);
root = insert(root, temp);
}
private Node <E> insert (Node<E> curr, Node<E> node) {
if (curr == null) {
curr = new Node(node.data);
return curr;}
else{
if (node.data.compareTo(curr.data) <= 0) {
curr.left=insert(curr.left, node);}
else {curr.right=insert(curr.right, node);}
}
return curr;}
public Iterator<E> iterator() { return null;}
public void remove(E data) {
Node<E> temp = new Node<E>(data);
remove (root, temp); }
private void remove (Node<E> curr,Node<E> node) {
if (curr != null && curr.left!=null && curr.right!=null) {
if (node.data.compareTo(curr.data) == 0) {
if (curr.left == null || curr.right == null) {
curr = curr.left != null ? curr.left : curr.right; }
else {
Node<E> iop = findIOP(curr);
curr.data = iop.data;
node.data = iop.data;
remove(curr.left, node); }
}
if (curr.data.compareTo(node.data) < 0) { remove(curr.right, node);}
else {remove(curr.left, node);}
}
else{return;}
}
public boolean search(E data) {return search(root, data);}
private boolean search(Node<E> curr, E data){
if (curr != null) {
if (data.compareTo(curr.data) == 0) { return true;}
else if (data.compareTo(curr.data) < 0) {search(curr.left, data);}
else {search(curr.right, data);}
}
else{ return false; }
return false; }
}


...全文
166 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧