人生第三篇CSDN博客,好像没有之前那么激动了….
public class MyTreeNode<T extends Comparable<T>> {
private T date;
private MyTreeNode<T> leftson;
private MyTreeNode<T> rightson;
private MyTreeNode<T> parent;
public void remove(T t){
int i = date.compareTo(t);
if(i<0){
rightson.remove(t);
}
if (i>0){
leftson.remove(t);
}
if (i==0){
if (rightson !=null) {
if(rightson.leftson!=null){
date=rightson.findFinalleft();
}else {
if (rightson.rightson==null){
date =rightson.date;
rightson=null;
}else {
date =rightson.date;
parent.rightson=rightson;
}
}
}else if(leftson!=null){
if(leftson.rightson !=null){
date=leftson.findFinalright();
}else {
date=leftson.date;
parent.leftson=leftson;
}
}else {
int k= date.compareTo(parent.date);
if(k>0){
parent.rightson=null;
}else {
parent.leftson=null;
}
}
}
}
private T findFinalleft(){
if (leftson.leftson==null){
T date=leftson.date;
leftson =leftson.rightson;
return date;
}else {
return leftson.findFinalleft();
}
}
private T findFinalright(){
if (rightson.rightson==null){
T date=rightson.date;
rightson=rightson.leftson;
return date;
}else {
return rightson.findFinalright();
}
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
if (this.leftson!=null){
builder.append(this.leftson.toString());
}
builder.append(" "+date +" ");
if (this.rightson!=null){
builder.append(this.rightson.toString());
}
return builder.toString();
}
public void add(T t){
int i= date.compareTo(t);
if (i<0){
if (this.rightson==null){
rightson=new MyTreeNode<T>(t);
rightson.parent=this;
}
else {
rightson.add(t);
}
}
if (i>0){
if (this.leftson ==null){
leftson=new MyTreeNode<T>(t);
leftson.parent=this;
}
else {
leftson.add(t);
}
}
}
public MyTreeNode(T date) {
this.date = date;
}
public T getDate() {
return date;
}
public void setDate(T date) {
this.date = date;
}
public MyTreeNode<T> getLeftson() {
return leftson;
}
public void setLeftson(MyTreeNode<T> leftson) {
this.leftson = leftson;
}
public MyTreeNode<T> getRightson() {
return rightson;
}
public void setRightson(MyTreeNode<T> rightson) {
this.rightson = rightson;
}
public MyTreeNode<T> getParent() {
return parent;
}
public void setParent(MyTreeNode<T> parent) {
this.parent = parent;
}
public static void main(String[] args) {
MyTreeNode<Integer> node=new MyTreeNode<>(8);
node.add(4);
node.add(2);
node.add(1);
node.add(3);
node.add(6);
node.add(5);
node.add(7);
node.add(12);
node.add(10);
node.add(14);
node.add(9);
node.add(11);
node.add(13);
node.add(15);
node.remove(8);
System.out.println(node);
}
}