バイナリツリーデータ構造


二進木
二分木は階層構造木構造を表す一連のリンクされたノードから成るデータ構造です.各々のノードは、親子関係を経た他にリンクされる.
任意の指定されたノードは、ほとんど2人の子供(左と右)を持つことができます.
二進木の内部構造
class Node{
  constructor(data,left=null,right=null){
    this.data=data;
    this.left=left;
    this.right=right;
  }
}

class BST{
  constructor(){
    this.root=null;
  }
  add(data){
    const node=this.root;
    if(node==null){
      this.root=new Node(data);
    }else{
      const searchTree=function(data){
        if(data<node.data){
          if(node.left==null){
            node.left=new Node(data);
            return;
          }else if(node.left!=null){
            return searchTree(node.left)
          }
        }else if(data>node.data){
          if(node.right==null){
            node.right=new Node(data)
                        return;
          }else if(node.right!=null){
            return searchTree(node.right)
          }
        }else{
          return null;
        }
      }
      return searchTree(data)
    }
  }
  findMax(){
    let current=this.root;
    while(current.right!=null){
      current=current.right;
    }
    return current.data;
  }
  findMin(){
    let current=this.root;
    while(current.left!=null){
      current=current.left
    }
    return current.data;
  }
  find(data){
    let current=this.root;
    while(current.data!=null){
      if(data<current.data){
        current=current.left;
      }else{
        current=current.right;
      }
      if(current==null){
        return null;
      }
    }
    return current;
  }
  isPresent(data){
    let current=this.root;
    while(current){
      if(data==current.data){
        return true
      }
      if(data<current.data){
        current=current.left;
      }else{
        current=current.right;
      }
    }
    return false;
  }
}

const bst=new BST();
bst.add(1);
bst.add(2);
bst.add(3);
console.log(bst.findMin());
console.log(bst.findMax());
console.log(bst.find(1));
console.log(bst.isPresent(1));

Any comments or suggestions are welcome.