zoukankan      html  css  js  c++  java
  • 剑指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;
    
            }
  • 相关阅读:
    关于第三方库
    一些css属性,抄自某个大神忘记谁了,不好意思
    10.使用express模拟数据服务器
    9.text-shadow
    8.css背景图案
    7.一个抄来圆形菜单
    6.文字闪烁效果
    5.偶然看到的一个css加载动画
    4.怎样使用css实现一个切角效果
    3.写一个简单的弹出菜单
  • 原文地址:https://www.cnblogs.com/Transkai/p/11416643.html
Copyright © 2011-2022 走看看