層次遍歷二叉樹

2022-05-13 07:22:13 字數 1190 閱讀 9856

本關任務:給定一棵二叉樹,借助佇列實現層次遍歷二叉樹。

為了完成本關任務,你需要掌握: 1、stl框架佇列的使用; 2、二叉樹層次遍歷。

1、stl框架佇列的使用 (1)引入標頭檔案#include// 佇列(2)定義佇列queueq; //引數是資料型別,這是佇列的定義方式(3)常用操作

q.empty()// 如果隊列為空返回true,否則返回false

q.size()// 返回佇列中元素的個數

q.pop()//刪除佇列首元素但不返回其值

q.front()// 返回隊首元素的值,但不刪除該元素

q.push(x)//在隊尾壓入新元素 ,x為要壓入的元素

q.back()//返回佇列尾元素的值,但不刪除該元素

2、二叉樹層次遍歷 層次遍歷定義:從二叉樹的第1層(即根結點)開始,從上至下逐層遍歷,在同一層中,則按從左到右的順序對結點逐個訪問。如下圖1所示,其層次遍歷結果為:abecdf

層次遍歷演算法思想: (1)初始化佇列,把根結點進隊 (2)讀隊頭元素,並把其孩子結點中非空的結點按先左後右的順序進隊,重複2,直到隊列為空。

輸入為一組測試用例,測試用例為二叉樹的擴充套件先序遍歷(二叉樹中缺失的孩子結點使用『#』表示),根據輸入建立二叉鍊錶,並輸出該二叉樹的層次遍歷結果。

測試輸入: abc##d##ef###

預期輸出: abecdf (注意:末尾不換行)

#include#include

#include

using

namespace

std;

struct bnode ;

char

data;

bnode*lchild;

bnode*rchild;

};//

根據先序遍歷構建一棵二叉樹,返回root指標

bnode* constructbinarytree(const

string& preorder, unsigned&index)

void hierarchyorder(bnode* root)//

二叉樹的層次遍歷(借助佇列實現) }

intmain()

}

層次遍歷二叉樹

問題 假定根節點位於第0層 1.層次遍歷二叉樹 每層換行分開 2.層次遍歷二叉樹指定的某層 本文 例如 上圖中1.123 4567 82.第三層 78可以看出得出第二問的解,第一問迎刃而解了,所以從問題二下手 1.層次遍歷二叉樹指定的某層 可以得出這樣的乙個結論 遍歷二叉樹的第k層,相當於遍歷二叉樹...

二叉樹層次遍歷

題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路 二叉樹的層次遍歷,利用棧的先進後出的特性。struct treenode class solution res.push back temp while m.empty m中是從左往右入棧,這裡把它反過來,s中是從右往左...

二叉樹層次遍歷

層次遍歷二叉樹,每一次儲存在list中,結果按從葉子層到根,從左到右的順序儲存 一 class solution return lists 相當於在先序的基礎上改進,level是每個node所在的層次。如果lists大小和level相等,說明開始新一層的儲存。如果不等,則直接把值存入相應層次的lis...