반응형
1. 문제
- 이진 탐색 트리가 주어질 때, 중위 순회를 수행하여 요구사항을 만족하는 class를 구현하라.
2. 해결
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/
class BSTIterator {
pointer: number;
travalArr: number[]
constructor(root: TreeNode | null) {
const traval = [];
function DFS(node: TreeNode | null) {
if(!node) return;
DFS(node.left);
traval.push(node.val);
DFS(node.right);
}
DFS(root);
this.travalArr = traval;
this.pointer = -1;
}
next(): number {
return this.travalArr[++this.pointer];
}
hasNext(): boolean {
return this.pointer + 1 < this.travalArr.length;
}
}
/**
* Your BSTIterator object will be instantiated and called as such:
* var obj = new BSTIterator(root)
* var param_1 = obj.next()
* var param_2 = obj.hasNext()
*/
- 초기화 시점에 중위 순회를 통해 value를 배열에 담아두고, pointer는 -1로 초기화.