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;
    
            }
  • 相关阅读:
    Expert Shell Scripting
    tr [a-z] [A-Z]
    ssh
    scp
    sort 命令
    cut 命令使用
    oracle 对象权限 系统权限 角色权限
    从linux内核中学到的编程技巧 【转】
    2019.3.16 最小生成树之城市改造
    2019.1.23 01迷宫
  • 原文地址:https://www.cnblogs.com/Transkai/p/11416643.html
Copyright © 2011-2022 走看看