基於層次遍歷的非遞迴複製二叉鍊錶

2021-05-25 17:12:53 字數 729 閱讀 8739

編寫複製一棵二叉樹的非遞迴演算法。

要求實現下列函式:

void copybitree(bitree t, bitree &tt);

/* 基於層次遍歷的非遞迴複製二叉鍊錶 */

二叉鍊錶型別定義:

typedef char telemtype;   // 設二叉樹的元素為char型別

typedef struct bitnode bitnode, *bitree;

可用佇列型別queue的相關定義:

typedef bitree qelemtype; // 設佇列元素為二叉樹的指標型別

status initqueue(queue &q);

status enqueue(queue &q, qelemtype e);

status dequeue(queue &q, qelemtype &e);

status gethead(queue q, qelemtype &e);

status queueempty(queue q);

code:

void copybitree(bitree t, bitree &tt)   

/* 基於層次遍歷的非遞迴複製二叉鍊錶 */

else

else   

if(b)   

else                 

}            

}   

}   

二叉樹的遍歷(遞迴,非遞迴,層次)

二叉樹的非遞迴遍歷 二叉樹是一種非常重要的資料結構,很多其它資料結構都是基於二叉樹的基礎演變而來的。對於二叉樹,有前序 中序以及後序三種遍歷方法。因為樹的定義本身就 是遞迴定義,因此採用遞迴的方法去實現樹的三種遍歷不僅容易理解而且 很簡潔。而對於樹的遍歷若採用非遞迴的方法,就要採用棧去模擬實現。在三...

二叉樹各種遞迴非遞迴層次遍歷

typedef struct bitnode bitnode,bitree 注意這裡面的下方的bitnode代表 struct bitnode bitree代表 struct bitnode的指標 直接上程式 沒有什麼特別的難點,除了後序非遞迴遍歷需要些2個棧進行維護可能處理需要操作多一點,考研不容...

二叉樹的遍歷(遞迴與非遞迴 層次)

遞迴遍歷 1.先序遍歷 根 左 右 void preorder treenode root 2.中序遍歷 左 根 右 void inorder treenode root 3.後序遍歷 左 右 根 void endorder treenode root 非遞迴遍歷 1.先序遍歷 根 左 右 void...