LeetCode94-二叉树的中序遍历
原题链接:https://leetcode-cn.com/problems/binary-tree-inorder-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 inorderTraversal(self, root: Optional[TreeNode]) -> List[int]: 9 def inorder(root: TreeNode): 10 if not root: 11 return 12 inorder(root.left) 13 res.append(root.val) 14 inorder(root.right) 15 res = list() 16 inorder(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 inorderTraversal(self, root: Optional[TreeNode]) -> List[int]: 10 # 每棵子树的整棵树左边界进栈,依次弹出的过程打印记录,对弹出节点的右树重复以上操作 11 res = list() 12 if root: 13 stack = deque() 14 while stack or root: 15 if root: 16 # 左边界进栈 17 stack.append(root) 18 root = root.left 19 else: 20 root = stack.pop() 21 res.append(root.val) 22 root = root.right 23 return res

浙公网安备 33010602011771号