Leetcode——144. 二叉樹的前序遍歷
給定一個二叉樹,返回它的 前序 遍歷。
示例:
輸入: [1,null,2,3]
1
2
/
3
輸出: [1,2,3]
進階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?
思路:
用棧(Stack)的思路來處理問題。
前序遍歷的順序為根-左-右,具體演算法為:
把根節點push到棧中
迴圈檢測棧是否為空,若不空,則取出棧頂元素,儲存其值
看其右子節點是否存在,若存在則push到棧中
看其左子節點,若存在,則push到棧中。
class Solution:
def preorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
stack = [root]
res = []
while stack:
node = stack.pop() #pop掉棧頂元素
res.append(node.val)
if node.right: #先右後左,因為棧是先入後出
stack.append(node.right)
if node.left:
stack.append(node.left)
return res
相關文章
- LeetCode題144. 二叉樹的前序遍歷LeetCode二叉樹
- 144. 二叉樹的前序遍歷二叉樹
- 144. 二叉樹的前序遍歷(java實現)--LeetCode二叉樹JavaLeetCode
- 【模板題】- 144. 二叉樹的前序遍歷二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- 144. 二叉樹的遍歷「前序、中序、後序」 Golang實現二叉樹Golang
- 程式碼隨想錄演算法訓練營day14 | leetcode 144. 二叉樹的前序遍歷、145. 二叉樹的後序遍歷、94. 二叉樹的中序遍歷演算法LeetCode二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹
- 個人練習之二叉樹的前序遍歷二叉樹
- Leetcode 889. 根據前序和後序遍歷構造二叉樹LeetCode二叉樹
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- LeetCode-105-從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- N叉樹——前序遍歷
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹 | PytLeetCode二叉樹
- 二叉樹的前序、中序、後序三種遍歷二叉樹
- 二叉樹:構造二叉樹(通過前序和中序遍歷)、映象翻轉、層次遍歷二叉樹
- 二叉樹的前序,中序,後序遍歷方法總結二叉樹
- 劍指offer:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。二叉樹
- Leetcode——94.二叉樹的中序遍歷LeetCode二叉樹
- [Leetcode]102.二叉樹的層次遍歷LeetCode二叉樹
- LeetCode102.二叉樹的層序遍歷LeetCode二叉樹
- PAT 1043 Is It a Binary Search Tree (25分) 由前序遍歷得到二叉搜尋樹的後序遍歷
- 二叉樹的遍歷二叉樹
- LeetCode-107-二叉樹的層序遍歷 IILeetCode二叉樹
- 889. 根據前序和後序遍歷構造二叉樹二叉樹
- 二叉樹遍歷二叉樹
- 二叉樹---遍歷二叉樹
- 刷題系列 - Python用非遞迴實現二叉樹前序遍歷Python遞迴二叉樹
- 完全二叉樹的遍歷二叉樹
- 玩轉二叉樹(樹的遍歷)二叉樹
- 二叉樹遍歷方法二叉樹
- 二叉樹遍歷 -- JAVA二叉樹Java
- 【樹01】對二叉樹前序/中序/後序遍歷演算法的一些思考二叉樹演算法
- C++樹——遍歷二叉樹C++二叉樹
- 【根據前序和中序遍歷構造二叉樹】棧+迭代 || 遞迴二叉樹遞迴
- leetcode 102 劍指Offer 32 二叉樹的層次遍歷LeetCode二叉樹