помогите из бнарного дерева сделать линейный список
Добавлено: 01 сен 2007, 11:02
помогите сделать из этого(бинарное дерево) линейный список
заранее спасибо!
Код: Выделить всё
class Node {
public Node left;
public Node right;
public Flat value;
Node(Flat value) {
this.value = value;
}
Node(Node node) {
this.left = node.left;
this.right = node.right;
this.value = node.value;
}
}
public class BST {
Node root;
int size = 0;
int i;
public void add(Flat f) {
if (this.root == null && f != null) {
this.root = new Node(f);
this.size++;
} else if (f != null) {
this.root = insert(this.root, f);
}
}
private Node insert(Node node, Flat value) {
Node result = new Node(node);
int compare = result.value.compareTo(value);
if (compare == 0) {
return result;
}
if (compare > 0) {
if (result.left != null) {
result.left = insert(result.left, value);
} else {
result.left = new Node(value);
this.size++;
}
}
else if (compare < 0) {
if (result.right != null) {
result.right = insert(result.right, value);
} else {
result.right = new Node(value);
this.size++;
}
}
return result;
}
public Flat get(Flat key) {
if (this.root == null)
return null;
else
return find(this.root, key);
}
private Flat find(Node node, Flat searchValue) {
int compareResult;
Flat result = null;
if ((compareResult = node.value.compareTo(searchValue)) == 0) {
return node.value;
} else if (compareResult > 0) {
if (node.left != null)
return find(node.left, searchValue);
} else {
if (node.right != null)
return find(node.right, searchValue);
}
return result;
}
public static void searchFlat(int r, int f, int s, String addr, Node a) {
if (a != null) {
searchFlat(r, f, s, addr, a.left);
if (a.value.floor == f && a.value.rooms == r) {
if (a.value.square >= s - s * 0.1
&& a.value.square <= s + s * 0.1) {
Flat.printFlat(a.value);
}
}
searchFlat(r, f, s, addr, a.right);
}
}
public static void inorderWalk(Node a) {
if (a != null) {
inorderWalk(a.left);
Flat.printFlat(a.value);
inorderWalk(a.right);
}
}
}