資料結構 二叉樹前序遍歷(非遞迴)

2021-08-30 06:17:38 字數 589 閱讀 2045

前序遍歷的順序:根-左-右

非遞迴的二叉樹前序遍歷大的思想分為:①訪問它的左路節點;②訪問左路節點的右子樹

具體非遞迴的實現思路如下:  

①拿到根節點,然後將其入棧,再看它的左子樹是否為空; 

②若左子樹不為空,則把此時左子樹作為當前節點,重複操作①; 

③當左子樹為空時,讓棧頂節點出棧,但不輸出,並去訪問出棧節點的右子樹,看其是否為空; 

④若出棧節點的右子樹不為空,則取出節點,迴圈到操作①; 

⑤如果出棧節點的右子樹為空,則繼續出棧,但不輸出,同時將出棧節點的右子樹置為當前節點,看其是否為空,重複操作④和⑤; 

⑥直到當前節點為null並且棧空,遍歷結束。 

void binarytreeprevordernonr(btnode* root)//前序遍歷的非遞迴

btnode* top = stacktop(&st);

stackpop(&st);

//2.訪問左路節點的右子樹

cur = top->_right;

} printf("\n");

}

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

對於一種資料結構而言,我們最常見的就是遍歷,那麼關於二叉樹我們該如何去遍歷呢?請看大螢幕 上圖是一棵二叉樹,前序遍歷結果 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 遞迴實現 ...

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

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