問題:給定一棵二叉樹,要求按分層遍歷二叉樹,即從上到下按層次訪問該二叉樹,每一層要求訪問順序為從左到右。
解:首先從根節點出發,依次將每層的節點從左到右壓入乙個陣列,並用乙個游標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...