層次遍歷二叉樹

2021-07-22 21:45:04 字數 954 閱讀 2484

問題(假定根節點位於第0層)

1. 層次遍歷二叉樹(每層換行分開)

2. 層次遍歷二叉樹指定的某層

本文**例如

上圖中1.

123

4567

8

2.

第三層

78

可以看出得出第二問的解,第一問迎刃而解了,所以從問題二下手

1. 層次遍歷二叉樹指定的某層

可以得出這樣的乙個結論:遍歷二叉樹的第k層,相當於遍歷二叉樹根節點的左右子樹的第k-1層。這樣一直遍歷下去,直到k=0時,輸出節點即可。

int printnodeatlevel(bitree root, int level)

else

return printnodeatlevel(root->left, level - 1) + printnodeatlevel(root->right, level - 1);

}

完整執行**

#includeusing namespace std;

typedef struct bitnode

bitnode, *bitree;

void createtree(bitree &root)

void deletetree(bitree root)

}int printnodeatlevel(bitree root, int level)

else

return printnodeatlevel(root->left, level - 1) + printnodeatlevel(root->right, level - 1);

}int main()

二叉樹層次遍歷

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

二叉樹層次遍歷

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

層次遍歷二叉樹

想看更多 對於一些資源排程問題,fifo的方法比較常用,比如作業系統的頁面置換演算法,在一些具體場景裡 銀行 醫院等排隊功能當然優先考慮用佇列去實現了 除此之外,佇列還可以用於二叉樹的層次遍歷。1.根節點加入佇列 2.進入迴圈,出口條件是隊列為空 3.出乙個節點,並且把他的左右子加入佇列 4.可以用...