0
点赞
收藏
分享

微信扫一扫

二叉树的前序遍历python(leetcode144)

# 144. 二叉树的前序遍历

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

1 递归

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def preorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        res = []
        # 递归做法
        # 确定递归的参数和返回值
        def tarversal(root):
            # 确定终止条件
            if root == None:
                return
            # 前序是中间节点第一个读取
            res.append(root.val)
            # 左
            tarversal(root.left)
            # 右
            tarversal(root.right)
        tarversal(root)
        return res

2 迭代

# 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: Optional[TreeNode]) -> List[int]:
        # root节点为空时直接返回[]
        # 前序遍历为中左右,stack中先处理中,再处理右,最后处理左,这样才是中左右的顺序
        if not root:
            return []
        stack = [root]
        res = []
        while stack:
            node = stack.pop()
            res.append(node.val)
            if node.right:
                stack.append(node.right)
            if node.left:
                stack.append(node.left)
        return res
举报

相关推荐

0 条评论