二叉樹的前序遍歷是先根節點,然後如果有左子樹則再先序遍歷左子樹,然後如果有右子樹則再先序遍歷其又子樹。
遞迴演算法如下
複製** **如下:
void preord程式設計客棧er(betree *t)
當然遞迴演算法是隱式使用了棧。我們仔細分析這個過程,先是取出了根節點進行了訪問,然後我們把根節點退棧,退棧後必然有節點進棧,怎麼辦呢?根節點只能直接訪問到rchild和lchild,如果是左子樹的根節點進了棧,那麼必然是後訪問之,所以必然是rchild先進棧,lchild後進棧。可以畫圖加深理解。
那麼現在寫出先序遍歷二叉樹的演算法。
複製** www.cppcns.com**如下:
void preorder(betree *t)
//根節點有右子樹,將其進棧,等到左子樹訪問完後再訪問之
if(nd->lchild!=null)
}}
本文標題: 二叉樹前序遍歷的非遞迴演算法
本文位址:
二叉樹前序遍歷(遞迴以及非遞迴)
對於一種資料結構而言,我們最常見的就是遍歷,那麼關於二叉樹我們該如何去遍歷呢?請看大螢幕 上圖是一棵二叉樹,前序遍歷結果 1 2 4 5 3 6 咦,我想你可能會疑惑什麼叫做前序遍歷,其實很簡單,就是按照 根 左 右 的方式去遍歷二叉樹。definition for a binary tree no...
遞迴和非遞迴實現二叉樹前序遍歷
1.前序遍歷就是根 左 右,按著這個順序,先說遞迴實現 建立node節點 public class node public int getdata public node getleft public node getright 初始化資料 public static node init 遞迴實現 ...
二叉樹前序遍歷
樹的前序遍歷 根左右 可以設計乙個棧來實現 首先讓根root入棧,然後root出棧,pop掉棧頂的元素,列印root,然後把root的右孩子入棧,左孩子入棧,讓棧頂的元素變成新的root,pop掉棧頂的元素,列印root,然後把root的右孩子入棧,左孩子入棧,重複此步驟 include inclu...