面試題32(二) 分行從上到下列印二叉樹

2021-08-29 04:04:19 字數 1121 閱讀 7608

一、題目

從上到下按層列印二叉樹,同一層的結點按從左到右的順序列印,每一層列印到一行。

二、關鍵

1.佇列

2.兩個變數。

三、解釋

1.佇列:使用佇列儲存將要列印的節點。

3.思路:變數tobeprinted表示在當前層中還沒有列印的節點數,變數nextlevel表示下一層的節點數。如果乙個節點有子節點,則把每乙個子節點加入佇列,同時把變數nextlevel加1.每列印乙個節點,tobeprinted減1.當tobeprinted變成0時,表示當前層的所有節點已經列印完畢,可以繼續列印下一層。

四、**

#include #include "..\utilities\binarytree.h"

#include void print(binarytreenode* proot)

if(pnode->m_pright != nullptr)

nodes.pop();

--tobeprinted;

if(tobeprinted == 0)

}}// ********************測試**********************

// 8

// 6 10

// 5 7 9 11

void test1()

// 5

// 4

// 3

// 2

void test2()

// 5

// 4

// 3

// 2

void test3()

void test4()

void test5()

// 100

// /

// 50

// \

// 150

void test6()

int main(int argc, char* argv)

劍指offer 面試題32 從上到下列印二叉樹

不分行從上到下列印二叉樹 從上到下列印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。class binarytreenode 使用佇列來完成,列印的同時也在往裡面加入。public void fun binarytreenode root queue queue newlinkedlist...

面試題32 從上到下列印二叉樹 II

從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行 思想 和普通的層次遍歷不一樣,這題需要記錄每一層元素的個數,在一趟 while 就遍歷完一層,然後再 add 到結果集裡面,每趟遍歷開始清零下一層元素個數 level 每次入隊乙個結點,level public list l...

劍指 32 2 分行從上到下列印二叉樹

題目描述 演算法分析 提交 class solution result.push back temp return result 兩個佇列,其中乙個儲存所處層,比方法一多用了乙個佇列,空間複雜度增加 vector print2 treenode proot else result layer pus...