【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
posted @ 2021-01-08 11:40  WangSJiNa  阅读(48)  评论(0)    收藏  举报