核心思想:首先根節點入隊,若佇列非空則做迴圈,若根節點有左右孩子,則左右孩子入隊,第乙個節點出隊,迴圈直到隊列為空。
#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層,相當於遍歷二叉樹...