검지offer61문제(이차수 여러 줄로 인쇄)

3226 단어
제목: 위에서 아래로 층별로 두 갈래 트리를 인쇄하고 같은 층의 결점은 왼쪽에서 오른쪽으로 출력합니다.층마다 줄을 출력합니다.
사고방식: 대기열로 한 층씩 인쇄합니다.(두 개의 변수가 필요합니다. 하나는 현재 인쇄되지 않은 노드 수를 저장하는 것이고, 다른 하나는 아래층을 저장하는 노드 수를 저장하는 것입니다.)
코드:
import java.util.ArrayList;
import java.util.*;


/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    ArrayList > Print(TreeNode pRoot) {
        ArrayList> list = new ArrayList>();
        if(pRoot == null){
            return list;
        }
        Queue layer = new LinkedList();
        ArrayList layerList = new ArrayList();
        layer.add(pRoot);
        int now = 1;
        int next = 0;
        while(!layer.isEmpty()){
            TreeNode t = layer.remove();
            now--;
            layerList.add(t.val);
            if(t.left != null){
                layer.add(t.left);
                next++;
            }
            if(t.right != null){
                layer.add(t.right);
                next++;
            }
            if(now == 0){
                list.add(new ArrayList(layerList));
                layerList.clear();
                now = next;
                next = 0;
            }
        }
        return list;
    }

}

좋은 웹페이지 즐겨찾기