バイナリツリーデータ構造
2093 ワード
二進木
二分木は階層構造木構造を表す一連のリンクされたノードから成るデータ構造です.各々のノードは、親子関係を経た他にリンクされる.
任意の指定されたノードは、ほとんど2人の子供(左と右)を持つことができます.
二進木の内部構造
二分木は階層構造木構造を表す一連のリンクされたノードから成るデータ構造です.各々のノードは、親子関係を経た他にリンクされる.
任意の指定されたノードは、ほとんど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.
Reference
この問題について(バイナリツリーデータ構造), 我々は、より多くの情報をここで見つけました https://dev.to/bvnkumar/javascript-binary-tree-data-structure-4hecテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol