-
[자료구조] Javascript로 Tree와 Tree 순회 구현하기■ Front-End/- JavaScript & TypeScript 2019. 5. 24. 09:00
얼마 전에 Java로 Tree 클래스를 만들어봤는데, Javascript도 만들어두면 좋을 것 같아서 작성해보았다.
순회까지 간단하게 추가했다.
class Tree { constructor(val) { this.val = val; this.leftNode = null; this.rightNode = null; } getVal() { return this.val; } setVal(val) { this.val = val; } setLeftNode(node) { this.leftNode = node; } getLeftNode(node) { return this.leftNode; } setRightNode(node) { this.rightNode = node; } getRightNode(node) { return this.rightNode; } // 중위순회 InOrderTree(node) { if(!node) { return; } this.InOrderTree(node.leftNode); console.log(node.val); this.InOrderTree(node.rightNode); } // 전위순회 preOrderTree(node) { if(!node) { return; } console.log(node.val); this.preOrderTree(node.leftNode); this.preOrderTree(node.rightNode); } // 후위순회 postOrderTree(node) { if(!node) { return; } this.postOrderTree(node.leftNode); this.postOrderTree(node.rightNode); console.log(node.val); } }
사용 예
let root = new Tree(1);
let node = new Tree(2);
root.setLeftNode(node);
node = new Tree(3);
root.setRightNode(node);
node = new Tree(4);
root.leftNode.setLeftNode(node);
node = new Tree(5);
root.leftNode.setRightNode(node);
node = new Tree(6);
root.rightNode.setLeftNode(node);
node = new Tree(7);
root.rightNode.setRightNode(node);
console.log(">>>> InOrder Start!! ");
root.InOrderTree(root);
console.log(">>>> preOrder Start!! ");
root.preOrderTree(root);
console.log(">>>> postOrder Start!! ");
root.postOrderTree(root);결과 값
>>>> InOrder Start!!
4
2
5
1
6
3
7
>>>> preOrder Start!!
1
2
4
5
3
6
7
>>>> postOrder Start!!
4
5
2
6
7
3
1
'■ Front-End > - JavaScript & TypeScript' 카테고리의 다른 글
[ES6] iterator, generator, async/await에 대하여 (0) 2019.06.20 [WEB] CORS에 대하여 (0) 2019.06.20 [ES6] Promise에 대하여 (0) 2019.06.19 [자료구조] Javascript로 Queue 구현하기 (0) 2019.05.23 [자료구조] Javascript로 Stack 구현하기 (0) 2019.05.23