二叉樹的分層列印,我們已經在「二叉樹的分層列印(一)」「二叉樹的分層列印(二)」中**過了,本文依然是**按層遍歷二叉樹,只是要求「從下往上」訪問,並且每一層中結點的訪問順序為「從右向左」。
解決思路:只要層與層之間加入啞元素(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 ...