144. 二叉树的前序遍历
递归方法
# 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]:res = []def helper(root, res):if root:res.append(root.val)helper(root.left, res)helper(root.right, res)helper(root, res)return res
迭代法
# 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]:if not root:return []stack, res = [root], []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