JS 데이터 구조 와 알고리즘 - 이 진 트 리 와 이 진 트 리 찾기
function Node(data,left,right) {
this.data = data;
this.left = left;
this.right = right;
this.show = show;
}
function show() {
return this.data;
}
function BST() {
// null
this.root = null;
//insert
this.insert = insert;
//inOrder
this.inOrder = inOrder;
}
function insert(data) {
// Node
var n = new Node(data,null,null);
// BST , , ,
if(this.root == null) {
this.root = n;
}else {
// current ( )
var current = this.root;
var parent;
while(true) {
parent = current;
// , null,
if(data < current.data) {
current = current.left;
if(current == null) {
parent.left = n;
break;
}
}else {
// ,
current = current.right;
if(current == null) {
parent.right = n;
break;
}
}
}
}
}
function inOrder(node) {
if(!(node == null)) {
inOrder(node.left);
console.log(node.show());
inOrder(node.right);
}
}
// :
var nums = new BST();
nums.insert(56);
nums.insert(22);
nums.insert(81);
nums.insert(10);
nums.insert(30);
nums.insert(77);
nums.insert(92);
inOrder(nums.root); //10 22 30 56 81 77 92
① 왼쪽 트 리 를 끝까지 옮 겨 다 니 며 모든 push 를 하나의 배열 에 넣 고 먼저 이러한 결 과 를 얻 습 니 다 [56, 22, 10].
② 재 귀적 이 완료 되 었 습 니 다. 현재 pop 의 첫 번 째 항목 인 10 부터 오른쪽 트 리 를 옮 겨 다 니 기 시 작 했 습 니 다. undefined 입 니 다.
③ 그리고 pop 은 두 번 째 항목 인 22 를 내 고 오른쪽 트 리 를 옮 겨 다 니 며 30 을 얻 습 니 다. console 은 왼쪽 트 리 를 먼저 옮 겨 인쇄 한 것 이기 때문에 30 을 (push) 56 과 22 사이 에 꽂 았 습 니 다. 결 과 는 [56, 30, 22, 10] 입 니 다.
④ 그리고 pop 은 세 번 째 항목 인 30, undefined 를 낸다.
⑤ 그리고 pop 은 네 번 째 항목 인 56 을 내 고 이 오른쪽 나 무 를 옮 겨 다 니 며 결 과 를 얻 었 다. [92, 81, 56, 30, 22, 10]
⑥ 그리고 pop 은 다섯 번 째 항목 인 81 을 내 는데 왼쪽 트 리 77 이 있 기 때문에 push 가 들 어가 고 console 코드 가 중간 에 있 기 때문에 92 와 81 중간 에 넣 어야 한다. 결과 [92, 81, 77, 56, 30, 22, 10] 그래서 마지막 인쇄 결 과 는 10, 22, 30, 56, 77, 81, 92 이다.
하 나 를 이 해 했 습 니 다. 뒤의 순서 와 뒤 순 서 를 옮 겨 다 니 면 괜 찮 습 니 다. 다만 console 코드 가 놓 인 위치 가 다 릅 니 다.주로 재 귀 를 이해한다.
function inOrder(node) {
if(!(node == null)) {
console.log(node.show());
inOrder(node.left);
inOrder(node.right);
}
}
inOrder(nums.root);
function inOrder(node) {
if(!(node == null)) {
inOrder(node.left);
inOrder(node.right);
console.log(node.show());
}
}
inOrder(nums.root);
참고 학습:
《 데이터 구조 와 알고리즘 자 바스 크 립 트 설명 》 《 고도 》.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.