1. 程式人生 > >按行列印二叉樹,每行後面回車

按行列印二叉樹,每行後面回車

#include<iostream> #include<queue> using namespace std; struct Node { Node* left; Node* right; char data; }; /* 初始化一棵樹 */ Node* initTree() { Node *root = new Node; Node *b = new Node; Node* c = new Node; Node* d = new Node; Node* e = new Node; Node* f = new Node; root->data = 'a'; c->data = 'c'; b->data = 'b'; d->data = 'd'; e->data = 'e'; f->data = 'f'; root->left = b; root->right = c; b->left = d; b->right = e; c->right = f; c->left = NULL; d->left = e->left = f->left = NULL; d->right = e->right = f->right = NULL; return root; } void printTreebyRow(Node* root) { queue<Node *> storequeue; storequeue.push(root); while(!storequeue.empty()) { int rowcount=0; queue<Node *> showqueue(storequeue); while(!showqueue.empty()) { cout<<showqueue.front()->data; showqueue.pop(); ++rowcount; } cout<<endl;         // 回車 while(rowcount) { if(storequeue.front()->left) storequeue.push(storequeue.front()->left); if(storequeue.front()->right) storequeue.push(storequeue.front()->right); storequeue.pop(); --rowcount; } } } int main() { printTreebyRow(initTree()); return 0; }

相關推薦

列印後面回車

#include<iostream> #include<queue> using namespace std; struct Node { Node* left;

劍指offer系列——之字形順序列印列印成多序列化二

按之字形順序列印二叉樹 題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 解題思路: 法一: 需要兩個棧。我們在列印某一行節點時,把下一層的子節點儲存到相應的棧裡。 如果

從上到下層打印層打印順序從左到右

public val empty queue ron root div rom top 1 class Solution{ 2 public : 3 vector<int> PrintFromTopToBottom(TreeNode* root){ 4

請實現一個函式按照之字形列印即第一按照從左到右的順序列印第二層按照從右至左的順序列印第三按照從左到右的順序列印其他以此類推。

 boolean flag1 = true ;                   //利用標誌位來控制順序,為true,則從左到右的順序,為false則相反      

【劍指offer】分行從上到下列印層次遍歷一層在一行輸出

與上一篇部落格層次遍歷二叉樹不同,這次是需要將每一層列印在同一行,這就需要判斷每一層的元素: 注意到,將每一層列印完了之後,下面的一層也全部進入到了佇列,因此採用一個計數器:nextLevel來計算下一層的個數,使用toBeList計算這層還麼有列印完的個數 初始nextLevel =

劍指offer32(1,2,3)--從上往下列印分行從上往下列印之字形順序列印

從上往下列印二叉樹 題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 思路: 層序遍歷,用到佇列 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right;

劍指offer(九) 棧的壓入彈出序列從上往下列印搜尋的後序遍歷序列

棧的壓入、彈出序列 題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出

演算法--分奇偶列印--佇列的應用

頭條的一道面試題,層序列印二叉樹,奇數行時從左到右,偶數行時從右到左。 如上所示,列印結果為 :   1    3  2   4   5   6   7   10   9  8 1. 普通的層序列印二叉樹,一般採用一個佇列,根節點入佇列,然後一次遍歷佇列中的節

【劍指offer】從上往下列印層次遍歷【python】

題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 採用佇列的思想,出佇列則列印,然後左節點右節點分別入佇列 注意如果需要兩個不同的列表,一定不能用list = result = []這樣

python 圖形列印

需求: python程式碼實現 1. 按層列印二叉樹 2. 需要列印二叉樹層與層之間的斜線 3. 結點的下一層如果沒有子節點,以‘N’代替 方法: 使用namedtuple表示二叉樹 使用StringIO方法,遍歷時寫入結果,最後打印出

Java 深度列印

二叉樹的列印程式需要用到佇列來完成,在Java中使用LinkedList類即可。具體的程式碼如下所示: public class TreeNode { private int value; private TreeNode ltr; private TreeNode

列印

在此程式碼中,用到了兩個佇列,佇列1用於進行列印、遍歷操作,佇列2用於臨時儲存資料,程式碼如下: vector<vector<int> > Print(TreeNode*

Python實現前後中序層次遍歷層次列印

樹 二叉樹的實現及遍歷 # -*- coding:utf-8 -*- ''' 用Python實現樹,並遍歷。 ''' class Node(): def __init__(self, x): self.val = x

建立層次遍歷分層次換輸出

測試輸入:123##4##5## 輸出:1             2 5             3 4 #include<iostream> #include<vector>

列印一棵要求從上往下列印一層從左往右列印

思路:在二叉樹的遍歷中,用得最多的就是遞迴,二叉樹的先序、中序、後序遍歷都可以用遞迴實現,但是這裡卻要使用另外一種方式解決。利用佇列先入先出的特性,我們先把二叉樹每一層的節點按從左往右的順序加入佇列,然後再讓佇列中的所有節點依次出棧並列印節點值,此時得到的就是所需的結果。程

劍指offer六十之之把打印成多

rac ger pty interview https 技術 記錄 ide clas 一、題目   從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。二、思路 隊列LinkedList完成層序遍歷,用end記錄每層結點數目 三、代碼 impo

劍指Offer 60. 把列印成多

題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 題目地址 https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&tqId=11213&rp=3&ru=/ta/co

劍指Offer 59. 之字形順序列印

題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 題目地址 https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?tpId=

建立一棵用連結串列方式儲存的並對其進行遍歷(先序中序和後序)列印輸出遍歷結果

題目如下 程式碼如下 #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct Node//結構體 {

演算法題(三十七):之字形順序列印

題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 分析 用兩個棧來實現,先把根結點放入s1,當行數為偶數時,s2從左到右放結點;當行數為奇數時,s1從右到左放結點; 筆者用j