關於分層遍歷二叉樹

2021-07-11 02:45:12 字數 881 閱讀 6600

問題:給定一棵二叉樹,要求按分層遍歷二叉樹,即從上到下按層次訪問該二叉樹,每一層要求訪問順序為從左到右。

解:首先從根節點出發,依次將每層的節點從左到右壓入乙個陣列,並用乙個游標cur記錄當前訪問的節點,另乙個游標lost指示當前層次的最後乙個節點的下乙個位置,以cur==last作為當前層次訪問的結束條件,在訪問某一層的同時將該層的所有節點的子節點壓入陣列,直到訪問完所有層次。

**:

#include #include using namespace std;

typedef struct node //節點儲存格式

node,*pnode;

int pos = 0;

pnode buildtree(int* a, int n)//建立二叉樹

pnode pnode = new node;

pnode->lchild = null;

pnode->rchild = null;

pnode->date = a[pos];

pos++;

pnode->lchild = buildtree(a, n);

pnode->rchild = buildtree(a, n);

return pnode;

}void priorder(node *node)//先序遍歷二叉樹,主要作用是檢查樹是否建立完整。

}void printbylevel(pnode pnode)

cout << endl; }}int main(); pnode pnode = null; pnode = buildtree(a, 17); priorder(pnode); cout << endl; printbylevel(pnode); return 0;}

分層遍歷二叉樹

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 ...

二叉樹的分層遍歷

二叉樹除了前 中 後序三種遍歷方式外,有時候還要用到分層遍歷。分層遍歷就是二叉樹的廣度優先演算法,暫時還沒有見過圖的廣度優先演算法,據說廣度優先演算法都要使用乙個輔助佇列。題目一 分層遍歷二叉樹,從上往下列印二叉樹的每乙個節點,同一層次的節點按照從左到右的順序列印。下圖順序輸出1 2 3 4 5 6...