public class TreeNode {
public int value;
public TreeNode left;
public TreeNode right;
public String toString() {
return"[节点值=" + value +",左=" + left + ",右=" + right +"]";
}
}
public class Shu {
public static void main(String[] args) {
int[] arr = {40,20,10,56,80,46,44,48,47,21,12,8,9,4,14,17};
TreeNode tree = new TreeNode();
tree.value = arr[0];
for(int i = 1; i
add(tree,arr[i]);
}
System.out.println(tree);
System.out.println(check(tree,21));
}
/*
* 查询 复杂度o(logn)
*/
public static boolean check(TreeNode t,int x) {
if(t == null) {
return false;
}else if(x == t.value) {
return true;
}else if(x < t.value) {
return check(t.left,x);
}else{
return check(t.right,x);
}
}
/*
* 增加 递归
*/
public static void add(TreeNode t,int x){
TreeNode w = new TreeNode();
w.value = x;
if( w.value
if(t.left == null){
t.left = w;
}else {
add(t.left,x);
}
}else {
if(t.right == null) {
t.right = w;
}else {
add(t.right,x);
}
}
}
//增加 循环
public static void add1(TreeNode t,int x) {
TreeNode w = new TreeNode();
w.value = x;
while(t!=null) {
if(w.value
if(t.left == null) {
t.left = w;
break;
}else {
t = t.left;
}
}else {
if(t.right == null) {
t.right = w;
break;
}else {
t = t.right;
}
}
}
}
//查询 循环
public static boolean check1(TreeNode t,int x) {
while(t !=null ) {
if(t.value == x) {
return true;
}else if( t.value > x) {
t = t.left;
}else {
t = t.right;
}
}
return false;
}
}