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

2022-09-28 19:48:33 字數 498 閱讀 9088

二叉樹的前序遍歷是先根節點,然後如果有左子樹則再先序遍歷左子樹,然後如果有右子樹則再先序遍歷其又子樹。

遞迴演算法如下

複製** **如下:

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...