按之字形顺序打印二叉树

题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

import java.util.ArrayList;
import java.util.Stack;

public class Solution {
    
    public ArrayList> Print(TreeNode pRoot) {
        
        if(pRoot == null)
            return new ArrayList>();
        Stack stack1 = new Stack();
        Stack stack2 = new Stack();
        ArrayList> array = new ArrayList>();
        ArrayList a = new ArrayList();
        stack1.push(pRoot);
        while(!stack1.isEmpty() || !stack2.isEmpty()) {
            
            while(!stack1.isEmpty()) {
                
                TreeNode node = stack1.pop();
                a.add(node.val);
                if(node.left != null)
                    stack2.push(node.left);
                if(node.right != null)
                    stack2.push(node.right);
            }
            if(a.size() > 0)
                array.add(a);
            a = new ArrayList();
            while(!stack2.isEmpty()) {
                
                TreeNode node = stack2.pop();
                a.add(node.val);
                if(node.right != null) {
                    
                    stack1.push(node.right);
                }
                if(node.left != null) {
                    
                    stack1.push(node.left);
                }
            }
            if(a.size() > 0)
                array.add(a);
            a = new ArrayList();
        }
        return array;
    }
    
}

你可能感兴趣的:(按之字形顺序打印二叉树)