나무--- 두 갈래 나무를 여러 줄로 인쇄

2388 단어
위에서 아래로 층별로 두 갈래 트리를 인쇄하고 같은 층의 결점은 왼쪽에서 오른쪽으로 출력합니다.층마다 줄을 출력합니다.
분석: 먼저 루트 노드를 인쇄할 대기열에 넣고 인쇄하기 전에 하위 노드를 대기열에 저장합니다.
여기는list가 현재 층을 저장하는 노드가 필요합니다. 계수기가 몇 개의 노드를 인쇄해야 하는지, 다음 층은 몇 개의 노드가 있는지 기록합니다.
/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function Print(pRoot)
{
    // write code here
    const queue=[],res=[]
    if(pRoot===null){
        return res
    }
    queue.push(pRoot)
    let nextLevel=0// 
    let toBePrinted=1// 
    let list=[]// 
    while(queue.length){
        const pNode=queue.shift()
        list.push(pNode.val)
        if(pNode.left!==null){
            queue.push(pNode.left)
            nextLevel++
        }
        if(pNode.right!==null){
            queue.push(pNode.right)
            nextLevel++
        }
        toBePrinted--
        if(toBePrinted==0){
            res.push(list)
            list=[]
            toBePrinted=nextLevel
            nextLevel=0
        }
    }
    return res
}

좋은 웹페이지 즐겨찾기