码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-08-27 10:42:37      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:esc   二叉树   描述   array   stack   pre   describe   list   剑指offer   

题目描述

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

解题思路

用一个栈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;

        }

 

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

标签:esc   二叉树   描述   array   stack   pre   describe   list   剑指offer   

原文地址:https://www.cnblogs.com/Transkai/p/11416643.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!