9.2 二叉排序树 页码P211
package hicc.ds.c09_find;
import hicc.ds.c06_bitree.BiTree;
class STS {
BiTree t;
int flag;
public STS(BiTree t, int status) {
this.t = t;
this.flag = status;
}
@Override
public String toString() {
return "STS [t=" + t.data + ", status=" + flag + "]";
}
}
public class SortTree {
static STS searchData(BiTree t, int k) {
int flag = 0;
BiTree p = null;
BiTree q = t;
while (q != null) {
if (k > (int) q.data) {
p = q;
q = q.rchild;
} else {
if (k < (int) q.data) {
p = q;
q = q.lchild;
} else {
flag = 1;
break;
}
}
}
return new STS(p, flag);
}
static int insertNode(BiTree t, int k) {
int flag = 0;
STS sts = searchData(t, k);
if (sts.flag == 0) {
BiTree p = sts.t;
flag = 1;
if (p != null) {
if (k > (int) p.data) {
p.rchild = new BiTree(k);
} else {
p.lchild = new BiTree(k);
}
}
t = p;
}
return flag;
}
public static void main(String[] args) {
BiTree L = new BiTree(55, new BiTree(42, new BiTree(10), new BiTree(45)), new BiTree(58));
BiTree R = new BiTree(90, new BiTree(70, new BiTree(67), new BiTree(83)), new BiTree(98));
BiTree T = new BiTree(63, L, R);
// T.levelOrder();
// System.out.println(searchData(T, 71));
// System.out.println(insertNode(T, 71));
// T.levelOrder();
for (int i = 0; i < 30; i++) {
int r = (int) (Math.random()*100+1);
// System.out.println(r);
insertNode(T, r);
}
T.levelOrder();
}
}