144. Binary Tree Preorder Traversal
因為要求不能用遞歸:
def preorder(tree):
if tree:
print(tree.getRootVal())
preorder(tree.getLeftChild())
preorder(tree.getRightChild())
按照前序遍歷樹的節(jié)點的順序(逐級往下讀左邊節(jié)點诊沪,然后逐級網(wǎng)上返回讀右邊節(jié)點)映胁,想到用棧孵睬。
- 1 隨機畫出一個一般的樹束凑,然后研究節(jié)點入棧的順序和出棧的操作
- 2 按照先讀左邊的源请,就一路讀下去,讀到葉節(jié)點后開始出棧边坤,對每一個出棧的節(jié)點,判斷是否有右節(jié)點谅年,若有茧痒,就接著讀,接著入棧融蹂,沒有就繼續(xù)往上返回出棧
- 3 直到棧內(nèi)為空旺订,停止循環(huán)