还有很多不友好的地方,关于delete方法,涉及到把原来的对象改得乱七八糟,只好最后返回一个新的对象
find();
insert();
delete();
preOrder(); inOrder(); postOrder();
getSuccessor();
creatTree();
public class Tree {
private Node root;
public Tree(Node root) {
this.root = root;
}
public Node getRoot() {
return root;
}
public Node find(int key) {
Node current = root;
if (current == null) {
return null;
}
while (current.getKey() != key) {
if (current.getKey() > key) {
current = current.getLeftChild();
} else {
current = current.getRightChild();
}
if (current == null) {
return null;// not find
}
}// find it
return current;
}
public boolean insert2(Node node) {
Node current = root;
if (current == null) {
return false;
}
int key = node.getKey();
while (current.getKey() != key) {
Node parent = current;
if (current.getKey() > key) {
current = current.getLeftChild();
} else {
current = current.getRightChild();
}
if (current == null) {
if (parent.getKey() > key) {
parent.setLeftChild(node);
} else {
parent.setRightChild(node);
}
return true;
}
}
return false;
}
public void insert(Node node) {
if (root == null) {
root = node;
return;
}
Node current = root;
while (current.getLeftChild() != null
&& current.getRightChild() != null) {
if (current.getKey() >= node.getKey()) {
current = current.getLeftChild();
} else {
current = current.getRightChild();
}
}
while (current.getLeftChild() != null) {
if (current.getKey() >= node.getKey())