直接上代码
public class Node{
int value;
Node left;
Node right;
public Node(int value){
this.value = value;
}
public void add(Node node){
if(node==null){
return;
}
if(node.value<this.value){
if(this.left ==null){
this.left=node;
}else{
this.left.add(node);
}
}else{
if(this.right==null){
this.right=node;
}else{
this.right.add(node);
}
}
}
//中序遍历
public void midShow() {
if(this.left != null) {
this.left.midShow();
}
System.out.print(this.toString());
if(this.right != null) {
this.right.midShow();
}
}
//查找节点
public Node search(int value){
if(this.value==value){
return this;
}else if(value<this.value){
//查找左子树
if(left==null){
return null;
}
//递归调用search()方法
return left.search(value);
}else{
//查找右子树
if(right==null){
return null;
}
//递归调用search()方法
return right.search(value);
}
}
//查找父节点
public Node searchParent(int val) {
if(((this.left !=null)&&(this.left.val ==val))||((this.right !=null)&&(this.right.val==val))){
return this;
}
Node node = null;
if(this.left !=null) {
node = this.left.searchParent(val);
if(node !=null)return node;
}
if(this.right !=null) {
node = this.right.searchParent(val);
}
return node;
}
}