LeetCode144-二叉树的前序遍历
原题链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/
方法一:递归,需了解树的递归序遍历
1 # Definition for a binary tree node. 2 # class TreeNode: 3 # def __init__(self, val=0, left=None, right=None): 4 # self.val = val 5 # self.left = left 6 # self.right = right 7 class Solution: 8 def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]: 9 def preorder(root: TreeNode): 10 if not root: 11 return 12 res.append(root.val) 13 preorder(root.left) 14 preorder(root.right) 15 res = list() 16 preorder(root) 17 return res
方法二:采用栈作为中间存储
1 # Definition for a binary tree node. 2 # class TreeNode: 3 # def __init__(self, val=0, left=None, right=None): 4 # self.val = val 5 # self.left = left 6 # self.right = right 7 from collections import deque 8 class Solution: 9 def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]: 10 # 1、每次从栈中弹出一个节点,记作cur 11 # 2、打印(处理)cur 12 # 3、先右再左入栈 13 # 4、周而复始 14 res = list() 15 if root: 16 stack = deque() 17 stack.append(root) 18 while stack: 19 head = stack.pop() 20 res.append(head.val) 21 if head.right: 22 stack.append(head.right) 23 if head.left: 24 stack.append(head.left) 25 return res

浙公网安备 33010602011771号