對於一種資料結構而言,我們最常見的就是遍歷,那麼關於二叉樹我們該如何去遍歷呢?
請看大螢幕 。。。。
上圖是一棵二叉樹,前序遍歷結果:1 2 4 5 3 6
咦,我想你可能會疑惑什麼叫做前序遍歷,其實很簡單,就是按照 根 -》 左 -》 右 的方式去遍歷二叉樹。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
return v;}};
你沒看錯,就這麼簡單,但是是如何遞迴的你得想清楚,這裡我就不做詳解了。那麼接下來我們再看看非遞迴的方式
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
treenode* top=s.top();
s.pop();
cur=top->right;
}return v;}};
這就是前序遍歷的非遞迴方式,這種方式主要是採用棧來完成的。這個過程實在不好畫圖,所以只能靠大家自行理解了,類似一種搞傳銷的模式,不斷的拉下線。。。。可能比喻不太恰當,不過我感覺還挺像的,哈哈!
all over
遞迴和非遞迴實現二叉樹前序遍歷
1.前序遍歷就是根 左 右,按著這個順序,先說遞迴實現 建立node節點 public class node public int getdata public node getleft public node getright 初始化資料 public static node init 遞迴實現 ...
二叉樹前序遍歷的非遞迴演算法
二叉樹的前序遍歷是先根節點,然後如果有左子樹則再先序遍歷左子樹,然後如果有右子樹則再先序遍歷其又子樹。遞迴演算法如下 複製 如下 void preord程式設計客棧er betree t 當然遞迴演算法是隱式使用了棧。我們仔細分析這個過程,先是取出了根節點進行了訪問,然後我們把根節點退棧,退棧後必然...
資料結構 二叉樹前序遍歷(非遞迴)
前序遍歷的順序 根 左 右 非遞迴的二叉樹前序遍歷大的思想分為 訪問它的左路節點 訪問左路節點的右子樹 具體非遞迴的實現思路如下 拿到根節點,然後將其入棧,再看它的左子樹是否為空 若左子樹不為空,則把此時左子樹作為當前節點,重複操作 當左子樹為空時,讓棧頂節點出棧,但不輸出,並去訪問出棧節點的右子樹...