【leetcode144】二叉樹的前序遍歷

使用棧來實現,注意進棧順序要先push右節點,再push左節點。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def preorderTraversal(self, root: TreeNode) -> List[int]:
        ans,stack = [],[]
        if not root: return ans
        stack = [root]
        while stack:
            tmp = stack.pop()
            ans.append(tmp.val)
            if tmp.right: stack.append(tmp.right)
            if tmp.left: stack.append(tmp.left)
        return ans

使用遞歸

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def preorderTraversal(self, root: TreeNode) -> List[int]:
        self.ans = []
        def func(root):
            if not root: return
            self.ans.append(root.val)
            func(root.left)
            func(root.right)
        func(root)
        return self.ans
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章