• 剑指offer 59.树 按之字形顺序打印二叉树


    题目描述

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

    解题思路

    用一个栈s1来存放奇数层节点,另一个栈s2来存放偶数层节点
     

    代码如下

    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
            
                 int layer = 1;
                 //s1存奇数层节点
                 Stack<TreeNode> s1 = new Stack<TreeNode>();
                 s1.push(pRoot);
                 //s2存偶数层节点
                 Stack<TreeNode> s2 = new Stack<TreeNode>();
                  
                 ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
                  
                 while (!s1.empty() || !s2.empty()) {
                     if (layer%2 != 0) {
                         ArrayList<Integer> temp = new ArrayList<Integer>();
                         while (!s1.empty()) {
                             TreeNode node = s1.pop();
                             if(node != null) {
                                 temp.add(node.val);
                                 System.out.print(node.val + " ");
                                 s2.push(node.left);
                                 s2.push(node.right);
                             }
                         }
                         if (!temp.isEmpty()) {
                             list.add(temp);
                             layer++;
                             System.out.println();
                         }
                     } else {
                         ArrayList<Integer> temp = new ArrayList<Integer>();
                         while (!s2.empty()) {
                             TreeNode node = s2.pop();
                             if(node != null) {
                                 temp.add(node.val);
                                 System.out.print(node.val + " ");
                                 s1.push(node.right);
                                 s1.push(node.left);
                             }
                         }
                         if (!temp.isEmpty()) {
                             list.add(temp);
                             layer++;
                             System.out.println();
                         }
                     }
                 }
                 return list;
    
            }
  • 相关阅读:
    IE6/IE7下:inline-block不兼容的问题
    ie6、ie7下overflow失效
    display:inline、block、inline-block三者之间的区别
    分割线用CSS样式做出来的效果
    jQuery实现鼠标点击div外的地方div隐藏消失的效果
    IE6下面的浮动问题
    [zabbix]zabbix分区表操作步骤
    [转载]系统管理:update-alternatives
    zabbix调优PPT
    mysql修改密码
  • 原文地址:https://www.cnblogs.com/Transkai/p/11416643.html
Copyright © 2020-2023  润新知