94. Binary Tree Inorder Traversal

Problem

1
2
3
4
5
6
7
8
9
10
11
12
13
Given a binary tree, return the inorder traversal of its nodes' values.

Example:

Input: [1,null,2,3]
1
\
2
/
3

Output: [1,3,2]
Follow up: Recursive solution is trivial, could you do it iteratively?

Solution

Sol 1 Recursion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 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 inorderTraversal(self, root: TreeNode) -> List[int]:
L = []
def helper(root):
if root == None:
return
helper(root.left)
L.append(root.val)
helper(root.right)
helper(root)
return L

Sol 2 Iteration

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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 inorderTraversal(self, root: TreeNode) -> List[int]:
L = []
stack = []
while stack or root:
while root:
stack.append(root)
root = root.left
root = stack.pop()
L.append(root.val)
root = root.right
return L