[32.3] 지그재그 순서로 두 갈래 나무를 인쇄하다

1755 단어

제목 설명


함수는 지그재그로 두 갈래 트리를 인쇄합니다. 즉, 첫 번째 줄은 왼쪽에서 오른쪽으로, 두 번째 줄은 오른쪽에서 왼쪽으로, 세 번째 줄은 왼쪽에서 오른쪽으로, 다른 줄은 이와 같이 인쇄합니다.

분석: 두 무더기

    public ArrayList> Print(TreeNode pRoot) {
        ArrayList> arrayLists = new ArrayList<>();
        if (pRoot == null) return arrayLists;
        Stack stack1 = new Stack<>();
        Stack stack2 = new Stack<>();
        
        int flag = 1;
        stack1.push(pRoot);

        while (!stack1.empty() || !stack2.empty()) {
            ArrayList array = new ArrayList<>();
            int size = 0;
            if ((flag & 1) == 1) {
                size = stack1.size();
                for (int i = 0; i < size; i++) {
                    TreeNode temp = stack1.pop();
                    array.add(temp.val);
                    if (temp.left != null) {
                        stack2.push(temp.left);
                    }
                    if (temp.right != null) {
                        stack2.push(temp.right);
                    }
                }
            } else {
                size = stack2.size();
                for (int i = 0; i < size; i++) {
                    TreeNode temp = stack2.pop();
                    array.add(temp.val);
                    if (temp.right != null) {
                        stack1.push(temp.right);
                    }
                    if (temp.left != null) {
                        stack1.push(temp.left);
                    }
                }
            }
            flag++;
            arrayLists.add(array);
        }
        return arrayLists;
    }

좋은 웹페이지 즐겨찾기