Compare commits

...

1 Commits

Author SHA1 Message Date
wangmeihang e5ec506d70 ADD file via upload 2021-11-29 10:23:07 +08:00
1 changed files with 147 additions and 0 deletions

147
binarySortTree.java Normal file
View File

@ -0,0 +1,147 @@
package tree;
public class binarySortTree {
public static void main(String[] args) {
int[] arr = {2,5,6,7,1,9,35,21};
BinarySortTree binarySortTree = new BinarySortTree();
for ( int i = 0; i < arr.length; i++) {
binarySortTree.add(new Node(arr[i]));
}
System.out.println("infixOrder :\n");
binarySortTree.infixOrder();
}
}
class BinarySortTree{
private Node root;
public void add(Node node){
if(root == null){
root = node;
}else{
root.add(node);
}
}
public void infixOrder(){
if(root != null){
root.fixOrder();
}else{
System.out.println("this binary tree is empty");
}
}
public Node search(int value){
if(root == null){
return null;
}else{
return root.searchNode(value);
}
}
public Node searchParent(int value){
if(root == null){
return null;
}else{
return root.searchParent(value);
}
}
public void del(int value){
if(root==null){
return;
}else{
Node targetNode = search(value);
if(targetNode == null){
return;
}
if(root.left == null && root.right == null){
root = null;
return;
}
Node parent = searchParent(value);
if(targetNode.left != null && targetNode.right != null){
if(parent.left != null && parent.left.value == value ){
parent.left = null;
}else if(parent.right != null && parent.right.value == value){
parent.right = null;
}
}
}
}
}
class Node{
int value;
Node left;
Node right;
public Node(int value){
this.value = value;
}
@Override
public String toString() {
return "Node [value=" + value + "]";
}
public Node searchNode(int value){
if(value == this.value){
return this;
}else if(value < this.value){
if(this.left == null){
return null;
}
return this.left.searchNode(value);
}else{
if(this.left == null){
return null;
}
return this.left.searchNode(value);
}
}
public Node searchParent(int value){
if((this.left != null && this.left.value == value)||(this.right != null && this.right.value == value)){
return this;
}else{
if(value < this.value && this.left != null){
return this.left.searchParent(value);
}else if(value >= this.value && this.right != null){
return this.right.searchParent(value);
}else{
return null;
}
}
}
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(node.value > this.value){
if(this.right == null){
this.right = node;
}else{
this.right.add(node);
}
}
}
}
//fix order
public void fixOrder(){
if(this.left != null){
this.left.fixOrder();
}
System.out.println(this);
if(this.right != null){
this.right.fixOrder();
}
}
}