😎풀이

  1. TreeNode를 연결형으로 조회할 수 있도록 LinkNode클래스 생성
  2. 생성된 LinkNode클래스에 TreeNode를 전위순회 하며 알맞게 입력
  3. 입력된 LinkNode클래스의 특성을 활용하여 다음 요소 확인 및 반환 메서드에 적절히 연결
// 연결형 노드 클래스 생성
class LinkNode {
    value: number | null
    next: LinkNode | null
    constructor(value: number | null) {
        this.value = value
    }
}

class BSTIterator {
    linkedList: LinkNode
    constructor(root: TreeNode | null) {
        // 연결형 노드에 전위순회한 노드를 순차적으로 연결
        this.linkedList = new LinkNode(null)
        let mock = this.linkedList
        function dfs(node: TreeNode | null) {
            if(!node) return null
            if(node.left) dfs(node.left)
            const transferNode = new LinkNode(node.val)
            mock.next = transferNode
            mock = mock.next
            if(node.right) dfs(node.right)
        }
        dfs(root)
    } 

    next(): number {
        this.linkedList = this.linkedList.next
        return this.linkedList.value
    }

    hasNext(): boolean {
        return !!this.linkedList.next
    }
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글

Powered by GraphCDN, the GraphQL CDN