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

    题目描述

    请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
     
    使用双向链表,先把当前行按顺序打印,再取出当前行并将下一行存入链表
     1 public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {//树 双向链表 mytip
     2         ArrayList<ArrayList<Integer>> re = new ArrayList<>();
     3         LinkedList<TreeNode> queue = new LinkedList<>();
     4         if(null==pRoot){
     5             return re;
     6         }
     7         queue.add(null);
     8         queue.add(pRoot);
     9         
    10         boolean flag = true;
    11         while(queue.size()>1){//最后一个为null
    12             TreeNode node = queue.poll();//当前不为null时,取出并将孩子结点存入链表
    13             if(null==node){//当前为null是将链表中数打印
    14                 ArrayList<Integer> list = new ArrayList<>();
    15                 Iterator<TreeNode> iter = null;
    16                 if(flag){
    17                     iter = queue.iterator();//正向
    18                 }else{
    19                     iter = queue.descendingIterator();//反向
    20                 }
    21                 while(iter.hasNext()){
    22                     TreeNode n = iter.next();
    23                     list.add(n.val);
    24                 }
    25                 if(queue.size()>0){
    26                     queue.add(null);
    27                 }          
    28                 re.add(list);
    29                 flag = !flag;
    30                 continue;//必须加
    31             }
    32             if(null!=node.left){
    33                 queue.add(node.left);
    34             }
    35             if(null!=node.right){
    36                 queue.add(node.right);
    37             }
    38         }
    39         return re;
    40     }
  • 相关阅读:
    BZOJ3631 [JLOI2014] 松鼠的新家
    HDU
    HDU
    HDU
    二分图求最大独立集模板
    HDU
    HDU
    HDU
    Codeforces 1197F Coloring Game 矩阵快速幂 (看题解)
    HDU
  • 原文地址:https://www.cnblogs.com/zhacai/p/10679898.html
Copyright © 2011-2022 走看看