• 57、按之字形顺序打印二叉树


    一、题目

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

    二、解法

     1 import java.util.ArrayList;
     2 import java.util.LinkedList;
     3 import java.util.Queue;
     4 import java.util.Stack;
     5 
     6 /*
     7 public class TreeNode {
     8     int val = 0;
     9     TreeNode left = null;
    10     TreeNode right = null;
    11 
    12     public TreeNode(int val) {
    13         this.val = val;
    14 
    15     }
    16 
    17 }
    18 */
    19 public class Solution {
    20     public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
    21          ArrayList<ArrayList<Integer>> result = 
    22                 new ArrayList<ArrayList<Integer>>();//返回结果
    23         Queue<TreeNode> data = new LinkedList<TreeNode>();//保存树节点
    24         if (pRoot == null)
    25             return result;
    26         data.add(pRoot);//添加根节点
    27         boolean isReverse = true;//按照层序之字形
    28         Stack<TreeNode> stack = new Stack<TreeNode>();
    29         while (!data.isEmpty()) {
    30             ArrayList<Integer> oneLine = new ArrayList<Integer>();//保存一行结果
    31             int p = 0,size = data.size();
    32             while (p++ < size) {
    33                 TreeNode t = data.poll();
    34                 if (isReverse)
    35                     oneLine.add(t.val);
    36                 else
    37                     stack.push(t);
    38                 if (t.left != null)
    39                     data.add(t.left);
    40                 if (t.right != null)
    41                     data.add(t.right);
    42             }
    43             isReverse = !isReverse;
    44             if(!stack.isEmpty()){
    45                 while(!stack.isEmpty())
    46                     oneLine.add(stack.pop().val);
    47             }
    48             result.add(oneLine);
    49         }
    50         return result;
    51     }
    52 
    53 }
  • 相关阅读:
    用with来打开文本文件
    字符串与列表的转换
    python中的字典两种遍历方式
    Sigar介绍与使用
    tomcat结合nginx使用小结
    AtomicInteger简介
    BeanUtils.copyProperties() 用法
    Spring RPC 入门学习(3)-插入Student对象
    Spring RPC 入门学习(3)-获取Student对象
    Spring RPC 入门学习(2)-获取Map对象
  • 原文地址:https://www.cnblogs.com/fankongkong/p/7462108.html
Copyright © 2020-2023  润新知