zoukankan      html  css  js  c++  java
  • 面试题:之字形顺序打印二叉树

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

    思路1:借助两个栈实现

    思路2:在偶数行需要倒着打印,可以用list.add(0,node.val);反着插入节点值

    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.Queue;
    public class Solution {
        public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
            ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>>();
            if(pRoot==null) return result;
            Queue<TreeNode> queue=new LinkedList<TreeNode>();
            queue.add(pRoot);
            int rows=1;
            while(!queue.isEmpty()){
                ArrayList<Integer> list=new ArrayList<>();
                int size=queue.size();
                for(int i=0;i<size;i++){
                    TreeNode node=queue.poll();
                    if(rows%2==0)
                        list.add(0,node.val);
                    else
                        list.add(node.val);
                    if(node.left!=null)
                        queue.offer(node.left);
                    if(node.right!=null)
                        queue.offer(node.right);
                }
                result.add(list);
                rows++;
            }
            return result;
        }
    }
  • 相关阅读:
    检查点(Checkpoint)过程如何处理未提交的事务
    SQL Server代理(4/12):配置数据库邮件
    SQL Server代理(3/12):代理警报和操作员
    hash_multimap
    hash_map
    hash_multiset
    hash_set
    hash 函数
    pair
    multimap
  • 原文地址:https://www.cnblogs.com/Aaron12/p/9532030.html
Copyright © 2011-2022 走看看