지그재그 순서로 두 갈래 트리 인쇄(층차 반복)

7861 단어 검지offer
제목 설명은 함수를 지그재그로 인쇄하는 두 갈래 트리, 즉 첫 번째 줄은 왼쪽에서 오른쪽으로, 두 번째 줄은 오른쪽에서 왼쪽으로, 세 번째 줄은 왼쪽에서 오른쪽으로, 다른 줄은 이와 같이 인쇄합니다.
사고방식: 층차가 두루 다니지만 층수에 따라 왼쪽에서 오른쪽으로 인쇄할 것인지 오른쪽에서 왼쪽으로 인쇄할 것인지를 판단해야 한다
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 {
     
    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
     
        ArrayList<ArrayList<Integer>> ans=new ArrayList<ArrayList<Integer>>();
        if(pRoot==null) return ans;
        Queue<TreeNode> q=new LinkedList<TreeNode>();
        boolean flag=true;
        q.add(pRoot);
        while(!q.isEmpty()){
     
            int size=q.size();
            ArrayList<Integer> arr=new ArrayList<Integer>();
            for(int i=0;i<size;i++){
     
                TreeNode tr=q.poll();
                if(tr==null) continue;
                if(flag){
     
                    arr.add(tr.val);
                }
                else{
     
                    arr.add(0,tr.val);
                }
                q.offer(tr.left);
                q.offer(tr.right);
            }
            if(arr.size()>0) ans.add(arr);
            flag=!flag;
        }
        return ans;
    }

}

좋은 웹페이지 즐겨찾기