JZ59 Print binary tree in zigzag order

Title description

Please implement a function to print the binary tree in a zigzag pattern, that is, the first line is printed from left to right, the second layer is printed from right to left, the third line is printed from left to right, and the other lines are printed from left to right. And so on.

import java.util.ArrayList;


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

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

    }

}
*/
import java.util.*;
public class Solution {
    
    
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
    
    
        ArrayList<ArrayList<Integer> > ans = new ArrayList();
        List<Integer > list = new ArrayList();
        Queue<TreeNode> queue = new LinkedList();
        TreeNode node;
        queue.add(pRoot);
        int count = 1;
        int temp = 0;
        int num = 0;
        if(pRoot == null) return ans;
        while (!queue.isEmpty()){
    
    
            node = queue.poll();
            if (node.left != null) {
    
    
                queue.add(node.left);
                temp++;
            }
            if (node.right != null) {
    
    
                queue.add(node.right);
                temp++;
            }
            list.add(node.val);
            count--;
            if (count == 0) {
    
    
                num++;
                if(num%2 == 0){
    
    
                    Collections.reverse(list);
                }
                ans.add(new ArrayList<>(list));
                list.clear();
                count = temp;
                temp = 0;
            }
        }
        return ans;

    }


}

Insert picture description here

Guess you like

Origin blog.csdn.net/qq_41620020/article/details/108636834