遞迴和非遞迴實現二叉樹前序遍歷

2021-08-09 22:50:01 字數 792 閱讀 6606

1.前序遍歷就是根、左、右,按著這個順序,先說遞迴實現

//建立node節點

public class node  

public int getdata()

public node getleft()

public node getright()

}

//初始化資料

public static node init()

//遞迴實現

public static void preorder(node root)

//然後呼叫

static arraylistlist = new arraylist();

public static void main(string args)

2.非遞迴的使用,是將使用棧來儲存的,先進後出,後勁先出。

/**

* 非遞迴實現二叉樹的前序遍歷,

* @param root

*/public static arraylistpreordernot(node root)

stack.push(root);

while (!stack.isempty())

return list2;

}

//呼叫

public static void main(string args)

二叉樹前序遍歷(遞迴以及非遞迴)

對於一種資料結構而言,我們最常見的就是遍歷,那麼關於二叉樹我們該如何去遍歷呢?請看大螢幕 上圖是一棵二叉樹,前序遍歷結果 1 2 4 5 3 6 咦,我想你可能會疑惑什麼叫做前序遍歷,其實很簡單,就是按照 根 左 右 的方式去遍歷二叉樹。definition for a binary tree no...

二叉樹前序遍歷的非遞迴演算法

二叉樹的前序遍歷是先根節點,然後如果有左子樹則再先序遍歷左子樹,然後如果有右子樹則再先序遍歷其又子樹。遞迴演算法如下 複製 如下 void preord程式設計客棧er betree t 當然遞迴演算法是隱式使用了棧。我們仔細分析這個過程,先是取出了根節點進行了訪問,然後我們把根節點退棧,退棧後必然...

用非遞迴實現二叉樹前序遍歷(用棧)

核心思想 根節點和左孩子直接遍歷,若有右孩子,則入棧。沒有左右孩子,直接出棧頂元素。ifndef btree h define btree h typedef char btdatatype typedef struct binarytreenodebtnode void binarytreedes...