資料結構 二叉樹層次遍歷

2021-07-12 04:20:15 字數 1232 閱讀 1280

/*

(1)二叉樹的層次遍歷;

(2)假設二叉樹採用二叉鏈儲存結構,設計乙個演算法輸出從根節點到每個葉子節點的路徑的逆

(即求葉子節點及其所有祖先節點的序列)。

*/#include #include #define maxsize 100

typedef char elemtype;

using namespace std;

typedef struct node

btnode;

void createbtnode(btnode *&b,char *str) //建立二叉樹}}

j++;

ch=str[j];

}}/*

層次遍歷:

先將根節點進隊,在隊不為空時迴圈:從佇列中出列乙個節點*p,訪問它;

若它有左孩子節點,將左孩子節點進隊; 若它有右孩子節點,將右孩子節點進隊。

如此迴圈,直到隊空為止。

*/void levelorder(btnode *b)

if(p->rchild!=null) //有右孩子時將其進隊

}}/* 非環形順序佇列qu,將所有已訪問過的節點指標進隊,並在佇列中儲存雙親節點的位置。

當找到乙個葉子節點時,在佇列中通過雙親節點的位置輸出根節點到葉子節點的路徑的逆。

*/void allpath(btnode *b)

qu[maxsize]; //定義非環形佇列

btnode *q;

int front,rear,p;

front=rear=-1;

rear++;

qu[rear].node=b; //根節點指標進入佇列

qu[rear].parent=-1; //根節點沒有雙親節點

while(front!=rear)

cout

if(q->rchild!=null) //*q有右孩子時將右孩子進佇列

}}int main()

{ btnode *b;

createbtnode(b,"a(b(d(,g)),c(e,f))");

cout<

levelorder(b);

cout執行結果:

資料結構 二叉樹 廣度遍歷(層次)

力扣題目 102.二叉樹的層序遍歷 107.二叉樹的層次遍歷ii 199.二叉樹的右檢視 637.二叉樹的層平均值 429.n叉樹的層序遍歷 102.二叉樹的層序遍歷 1.用佇列去裝 先入根節點 2.當前層出隊,並把左右節點入隊 3.重複二,直到佇列空 class solution answer.p...

mysql 遍歷二叉樹 資料結構 二叉樹遍歷

這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...

資料結構 遍歷二叉樹

資料結構實驗之二叉樹二 遍歷二叉樹 time limit 1000ms memory limit 65536kb submit statistic problem description 已知二叉樹的乙個按先序遍歷輸入的字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並按中序和後序的方...