zoukankan      html  css  js  c++  java
  • 剑指offer-按之字形顺序打印二叉树

    /*
    请实现一个函数按照之字形打印二叉树
    即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
    */
    import java.awt.List;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.LinkedList;
    import java.util.Queue;
    
    class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    
    public class Solution {
        ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
            ArrayList<ArrayList<Integer>> ret = new ArrayList<>();
            Queue<TreeNode> queue = new LinkedList<>();
            queue.add(pRoot);
            boolean rev = false;
            while(!queue.isEmpty()) {
                ArrayList<Integer> list = new ArrayList<>();
                int cnt = queue.size();
                while(cnt-->0) {
                    TreeNode t = queue.poll();
                    if(t==null) continue;
                    list.add(t.val);
                    queue.add(t.left);
                    queue.add(t.right);
                }
                if(rev) Collections.reverse(list);
                rev=!rev;
                if(list.size()!=0) ret.add(list);
            }
            return ret;
        }
    }
  • 相关阅读:
    go——数组
    go——流程控制
    go——基本类型
    go——基本构成要素
    go——常量
    go——变量
    go——标准命令
    go——工程结构
    python 优雅的使用正则表达式 ~ 1
    python 安装操作 MySQL 数据库.
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10342291.html
Copyright © 2011-2022 走看看