二叉樹層次遍歷(用佇列實現)

2021-09-26 06:57:45 字數 1576 閱讀 7201

核心思想:首先根節點入隊,若佇列非空則做迴圈,若根節點有左右孩子,則左右孩子入隊,第乙個節點出隊,迴圈直到隊列為空。

#ifndef _btree_h_

#define _btree_h_

typedef char btdatatype;

typedef struct binarytreenodebtnode;

void binarytreedestory(btnode* root);

void binarytreelevelorder(btnode* root);

#endif/*_btree_h_*/

#ifndef _queue_h_

#define _queue_h_

#include "btree.h"

typedef btnode * qudatatype;

typedef struct queuenode

queuenode;

typedef struct queue queue;

void queueinit(queue* plist);

void queuedestory(queue* plist);

void queuepop(queue* plist);

void queuepush(queue* plist, qudatatype x);

qudatatype queuetop(queue* plist);

int queueisempty(queue* plist);

#endif //_queue_h_

#include "queue.h"

#include #include #include void queueinit(queue* plist)

void queuedestory(queue* plist)

}void queuepop(queue* plist)

}void queuepush(queue* plist, qudatatype x)

plist->_rear->_next = cur;//尾部下乙個是插入的cur

plist->_rear = cur;//cur是最後乙個元素

}int queueisempty(queue* plist)

qudatatype queuetop(queue* plist)

return plist->_head->_data;

}

#include"btree.h"

#include"queue.h"

#include#includevoid binarytreelevelorder(btnode* root)//用佇列層次遍歷

if (cur->rchild)

queuepop(&qu);

} queuedestory(&qu);

}

#include "btree.h"

#include "queue.h"

int main()

二叉樹按層次遍歷 佇列實現

最近資料結構看的還真是噁心額,腦子不好使,演算法寫不來額 二叉樹一大堆概念性的東西,不過還是寫吧。二叉樹 binary tree 二叉樹的基本形態 二叉樹也是遞迴定義的,其結點有左右子樹之分,邏輯上二叉樹有五種基本形態 1 空二叉樹 a 2 只有乙個根結點的二叉樹 b 3 只有左子樹 c 4 只有右...

利用佇列實現二叉樹的層次遍歷

利用佇列實現二叉樹的層次遍歷 include define maxsize 100 define nulldata 0 typedef char datatype 二叉鍊錶型別定義 typedef struct binnode binnode,bintree 迴圈佇列型別定義 typedef str...

層次遍歷二叉樹

問題 假定根節點位於第0層 1.層次遍歷二叉樹 每層換行分開 2.層次遍歷二叉樹指定的某層 本文 例如 上圖中1.123 4567 82.第三層 78可以看出得出第二問的解,第一問迎刃而解了,所以從問題二下手 1.層次遍歷二叉樹指定的某層 可以得出這樣的乙個結論 遍歷二叉樹的第k層,相當於遍歷二叉樹...