二叉樹的非遞迴遍歷(前序,中序,後序,層序)

2021-09-25 17:17:53 字數 1222 閱讀 8122

廢話不多說,直接上**。有問題歡迎提出

前序遍歷非遞迴

void binarytreeprevordernonr(treenode  root)

stackstack = new stack<>();

treenode node = root;

while(node != null || !stack.empty())

node = stack.pop();

node = node.right;

}}

中序遍歷非遞迴

void binarytreeinordernonr(treenode root)

stackstack = new stack<>();

treenode node = root;

while(node != null || !stack.empty())

node = stack.pop();

system.out.print(node.val+" ");

node = node.right;

}}

後序遍歷非遞迴

需要注意左子樹為空時,還要判斷右子樹。

void binarytreepostordernonr(treenode root)

stackstack = new stack<>();

treenode node = root;

treenode prev = null;

while(node != null || !stack.empty())

node = stack.peek();

if(node.right == null || node.right == prev)else

}}

二叉樹層序遍歷

void binarytreelevelorder(treenode root)

queuequeue = new linkedlist<>();

queue.offer(root);

while(!queue.isempty())

if(node.right != null)

}}

二叉樹的非遞迴前序中序後序遍歷

做個筆記,方便日後查閱 全部是模板函式,c 語言 template void preorder node root,ostream os if st.empty os endl template void midorder node root,ostream os if st.empty os en...

二叉樹的前序 中序 後序遍歷(非遞迴)

今天弄了一天的二叉樹的前序 中序和後序遍歷,分享出來,共同交流。中採用先序遍歷的方法建立二叉樹,示例建立二叉樹格式如下 建立過程中,以 include include typedef struct btnodebtnode,btree typedef struct stackbtstack type...

二叉樹的前序 中序 後序遍歷(非遞迴)

如需遞迴寫法,可以參考 結構體定義 struct node 構建二叉樹使用二叉鍊錶使用非遞迴的寫法,必然需要其他輔助空間來實現,對於遞迴改寫成非遞迴的乙個做法而言,我們首選的輔助空間就是棧結構。而我們要做的,就是使用棧去模擬遞迴的操作 只能操作棧頂 如果想使用棧完全模擬遞迴的操作,將會對結構體進行更...