二叉樹的分層列印(三)

2021-07-12 07:16:14 字數 796 閱讀 6203

二叉樹的分層列印,我們已經在「二叉樹的分層列印(一)」「二叉樹的分層列印(二)」中**過了,本文依然是**按層遍歷二叉樹,只是要求「從下往上」訪問,並且每一層中結點的訪問順序為「從右向左」。

解決思路:只要層與層之間加入啞元素(null),然後逆序輸出即可。

(即在每一層之間加乙個標識來解決這個問題,此處使用null來分隔每一層)

具體實現如下:

#include 

using

namespace

std;

#include

typedef

struct node

binode, *bitree;

// 先序建立二叉樹 (輸入時,按先序次序輸入二叉樹中結點的值,以 # 字元表示空樹)

bitree createbitree()

return t;

}// 分層列印二叉樹(由底向上)

void reverseprinttreebylevel(bitree t)

index++; // 跳過啞元素

}for (int i = (int)vec.size() - 1; i >= 0; i--)

printf("\n");

}int main(int argc, const

char * argv)

補充:如果是要求「從下往上」訪問,並且每一層中結點的訪問順序為「從左向右」,那麼只需要改變上述 reverseprinttreebylevel 函式中左右孩子節點加入vector的順序即可。

二叉樹之字形分層列印

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。分析 按之字形列印需要兩個棧,我們列印某一層的節點時,拔下一層的子節點儲存到相應的棧中。如果當前列印的是奇數層,那麼則先儲存左子節點再右子節點,如果當前列印...

分層遍歷二叉樹

include include struct node struct node inittree for i 0 i 2 i tree 3 lchild tree 7 tree 5 rchild tree 8 return tree 0 int printnodeatlevel struct nod...

分層遍歷二叉樹

程式設計之美 3.10 p252 給定一棵二叉樹,壓球按分層遍歷該二叉樹,即從上到下按層次訪問該二叉樹 每一層將單獨輸出一行 每一層要求訪問的順序為從左到右,並將節點依次編號。分層輸出二叉樹。struct nodevoid printnodebylevel node root 輸出為 1 2 34 ...