Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
wangmeihang | e5ec506d70 |
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue