1. 程式人生 > >【LeetCode 中等題】67-二叉樹的前序遍歷

【LeetCode 中等題】67-二叉樹的前序遍歷

題目描述:給定一個二叉樹,返回它的 前序 遍歷。

 示例:

輸入: [1,null,2,3]  
   1
    \
     2
    /
   3 

輸出: [1,2,3]

進階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?

解法1。用迴圈的方法,但和BFS似乎有些不一樣,這是一種DFS?用的是棧而非佇列,不能用佇列,有些測試用例會報錯

class Solution(object):
    def preorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        if not root:
            return []
        res = []
        q = [root]
        while q:
            node = q.pop()
            if node:
                res.append(node.val)
                q.append(node.right)
                q.append(node.left)  
        return res