Data Structureを整理してみましょう.//Part3
13466 ワード
Data Structure,
複数のデータセットの使用と格納方法を定義します.
5. Tree
ノードごとに階層化されたデータ構造.
読みやすい情報をたくさん整理するときに役立ちます.
ファミリースペクトルやコンピュータのディレクトリ構造や組織図などの形式を考慮することができる.
図を見て、Treeを理解してください.
Treeは各ノードからなり,上部にRoot Nodeと呼ばれる起点がある.
関係により、これらのノードはParentノードであってもよいし、Childノードであってもよい.
もちろん、どちらでもいいです.
最初のRoot Nodeを作成し、Child Nodeを追加できます.
Root NodeだけがChild Nodeを作成できるわけではありません.各NodeはChild Nodeを持つことができます.
ルートベースで他のノードにアクセスできる距離をDepthと呼ぶ.
ノードとノードを接続する線をEdgeと呼びます.
次はTreeの基本的な方法です.
class TreeNode {
constructor(value) {
this.value = value;
this.children = [];
}
insertNode(value) {
let newTreeNode = new TreeNode(value);
this.children.push(newTreeNode);
}
contains(value) {
if(this.value === value) {
return true;
} else {
for(let i = 0; i < this.children.length; i++) {
if(this.children[i].contains(value)) {
return true
}
}
}
return false;
}
}
6.BinarySearchTree(BST)、バイナリナビゲーション構造
Treeの形式ですが、各ノードには最大2つのChild Nodeがあります.
BSTの機能は次のとおりです.
パラメータの左下の値は、パラメータの値より小さくなければなりません.
逆に、Parentの右下の値はParentの値より大きくなければなりません.
BSTをブラウズする方法は次のとおりです.
1.深度優先ナビゲーション
:Rootから徐々に最深のDepthに入り、さらに最深のDepthに入り、Treeのアプローチを模索します.
2.幅優先ナビゲーション
:1つのDepthの各ノードは、最初にナビゲート(またはSibling)し、次にDepthに入り、Tree全体をナビゲートする方法です.
次はBSTの基本的な方法です.
class BinarySearchTreeNode {
constructor(value) {
this.value = value;
this.left = null;
this.right = null;
}
insert(value) {
if (value > this.value) {
if(this.right === null) {
let newNode = new BinarySearchTreeNode(value);
this.right = newNode;
} else {
this.right.insert(value);
}
}
if (value < this.value) {
if(this.left === null) {
let newNode = new BinarySearchTreeNode(value);
this.left = newNode;
} else {
this.left.insert(value);
}
}
}
contains(value) {
if(this.value === value) {
return true;
} else {
if(this.value > value) {
if(this.left === null) {
return false;
} else if(this.left.contains(value)) {
return true;
}
} else {
if(this.right === null) {
return false;
} else if(this.right.contains(value)) {
return true;
}
}
}
return false;
}
}
Reference
この問題について(Data Structureを整理してみましょう.//Part3), 我々は、より多くの情報をここで見つけました https://velog.io/@900djob/Data-Structure를-정리해보자.-Part3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol