Problem description:
Given the root of a binary tree, return the inorder traversal of its nodes’ values.
Example 1:
Input: root = [1,null,2,3]
Output: [1,3,2]
Solution:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
class Solution: def inorderTraversal(self, root: TreeNode) -> List[int]: if not root: return [] stk = collections.deque() res = [] while True: while root: stk.append(root) root = root.left if not stk: return res top = stk.pop() res.append(top.val) root = top.right return res ''' if not root: return [] def traverse(root, res): if not root: return None traverse(root.left, res) res.append(root.val) traverse(root.right, res) res = [] traverse(root, res) return res '''
|
time complexity: $O(n)$
space complexity: $O(n)$
reference:
related problem: