按之字形打印数据

 1 class Solution {
 2 public:
 3     vector<vector<int> > Print(TreeNode* pRoot) {
 4         vector<vector<int>> res;
 5         if(pRoot == NULL)
 6             return res;
 7         stack<TreeNode*> num[2];
 8         int flag[2];
 9         int i=0;
10         num[0].push(pRoot);
11        // flag[0]=1;
12         while(!num[0].empty() || !num[1].empty())
13         {
14             vector<int> prin;
15             while(!num[i].empty())
16             {
17
18                 prin.push_back(num[i].top()->val);
19                 if(i==1)
20                 {
21                    if(num[i].top()->right)
22                        num[1-i].push(num[i].top()->right);
23                     if(num[i].top()->left)
24                        num[1-i].push(num[i].top()->left);
25                 }
26                 else
27                 {
28                     if(num[i].top()->left)
29                        num[1-i].push(num[i].top()->left);
30                     if(num[i].top()->right)
31                        num[1-i].push(num[i].top()->right);
32                 }
33                num[i].pop();
34
35             }
36             res.push_back(prin);
37             i=1-i;
38         }
39         return res;
40     }
41
42 };
时间: 2024-10-29 19:08:45

按之字形打印数据的相关文章

[算法]“之”字形打印矩阵

题目: 给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵.例如: 1   2   3   4 5   6   7   8 9  10  11 12 “之”字形打印的结果为:1,2,5,9,6,3,4,7,10,11,8,12 要求额外的空间复杂度为O(1). 思路: 1.上坐标(tR,tC)的初始为(0,0),先沿着矩阵的第一行移动(tC++),当达到第一行最右边的元素后,再沿着矩阵最后一列移动  (tR++). 2.下坐标(dR,dC)的初始为(0,0),先沿着矩阵的第一列移动(dR

蛇形数组和“之”字形打印

蛇形数组: 上面的数组就叫做蛇形数组. 如何打印蛇形数组:一定不要一行一行的考虑,不然就陷入误区了. #include<stdio.h> #include<stdlib.h> #define line 10  void initsarr(int arr[line][line]) { int i1 = 0; int j1 = 0; int m1 = line - 1; int n1 = line - 1; int k = 0; int i2; int j2; int m2; int 

多线程-生产者与消费者(存储数据与打印数据)

无线程同步: 存储数据: 1 public class Storage { 2 int data; 3 4 public int getData() { 5 return data; 6 } 7 8 public void setData(int data) { 9 this.data = data; 10 } 11 12 } 产生数据: 1 public class Counter implements Runnable { 2 private Storage storage; 3 4 pub

之字形打印矩阵

题目描述 对于一个矩阵,请设计一个算法,将元素按“之”字形打印.具体见样例. 给定一个整数矩阵mat,以及他的维数nxm,请返回一个数组,其中元素依次为打印的数字. 测试样例: [[1,2,3],[4,5,6],[7,8,9],[10,11,12]],4,3 返回:[1,2,3,6,5,4,7,8,9,12,11,10] Solution 1: class Printer { public: vector<int> printMatrix(vector<vector<int>

linux内核打印数据到串口控制台,printk数据不打印问题

linux内核打印数据到串口控制台问题 原文来源:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.查看当前控制台的打印级别 cat /proc/sys/kernel/printk 4    4    1    7 其中第一个“4”表示内核打印函数printk的打印级别,只有级别比他高的信息才能在控制台上打印出来,既 0-3级别的信息 2.修改打印 echo "新的打印级别  4    1    7" >/proc/sys/kernel/pr

我常用的自定义函数之p 用于打印数据,调试代码很方便

我常用,主要用于打印数据,看起来特别简洁,当然函数还可以写的更具体 1 function p($arr){ 2 header('content-type:text/html;charset=utf8'); 3 if(is_string($arr)){ 4 echo $arr; 5 }else if(is_array($arr)){ 6 echo "<pre>"; 7 print_r($arr); 8 echo "</pre>"; 9 }els

矩阵--“之”字形打印矩阵

给定一个矩阵matrix, 按照"之" 字形的方式打印这个矩阵, 例如: 1 2 3 4 5 6 7 8 9 10 11 12"之" 字形打印的结果为: 1, 2, 5, 9, 6, 3, 4, 7, 10, 11,8, 12[要求] 额外空间复杂度为O(1). 原文地址:https://www.cnblogs.com/SkyeAngel/p/8745955.html

《程序员代码面试指南》第八章 数组和矩阵问题 &quot;之&quot;字形打印矩阵

题目 "之"字形打印矩阵 java代码 package com.lizhouwei.chapter8; /** * @Description: "之"字形打印矩阵 * @Author: lizhouwei * @CreateDate: 2018/4/28 22:53 * @Modify by: * @ModifyDate: */ public class Chapter8_3 { public void printMatrixZigZag(int[][] matri

剑指:之字形打印二叉树

题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 如二叉树: 1 / 2 3 / \ / 4 5 6 7 打印结果为: 1 3 2 4 5 6 7 解法 之字形打印,即先从左到右,后从右到左,借助栈结构实现: 两个辅助栈:一个存放奇数层节点的栈s1,一个存放偶数层节点的栈s2. s1栈中的节点弹出,其节点的 左->右 孩子进s2栈: s2栈中的节点弹出,其节点的 右->左 孩子进s1栈: