JZ59--- 두 갈래 트리를 글자순으로 인쇄하기

7090 단어 검지offer
제목 설명: 함수는 지그재그로 두 갈래 트리를 인쇄합니다. 즉, 첫 번째 줄은 왼쪽에서 오른쪽으로, 두 번째 줄은 오른쪽에서 왼쪽으로, 세 번째 줄은 왼쪽에서 오른쪽으로, 다른 줄은 이와 같이 인쇄합니다.
문제: 문제의 뜻에 의하면 S형에 따라 두 갈래 트리를 인쇄해야 한다. 사실은 층차적으로 훑어보는 것은 홀수층의 정차적인 인쇄일 뿐이고 짝수층의 역차적인 인쇄일 뿐이다.(1) 부울형 변수 flag를 설정하고 홀수층은true, 짝수층은false로 설정합니다.(2) 인쇄할 때 flag를 판단하여 인쇄하는 방법을 결정한다.
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
    ArrayList<ArrayList<Integer>> res = new ArrayList<> ();
    if(pRoot == null){
        return res;
    }
    Queue<TreeNode> queue = new LinkedList<> ();
    queue.offer (pRoot);
    // true ,false 
    boolean flag = true;
    while(!queue.isEmpty ()){
        ArrayList<Integer> list = new ArrayList<> ();
        int size = queue.size ();
        for(int i = 0;i < size;i++) {
            TreeNode node = queue.poll ();
            if(node == null){
                continue;
            }
            if(flag){
                list.add (node.val);
            }else{
                list.add (0,node.val); //  
            }
            queue.offer (node.left);
            queue.offer (node.right);
        }
        flag = !flag;
        if(list.size () > 0){
            res.add (list);
        }
    }
    return res;
}

좋은 웹페이지 즐겨찾기