Includes in-order, pre-order, post-order traversals.
Solution 1
Recursive:
class Solution:
def inorderSuccessor(self, root: 'TreeNode', p: 'TreeNode') -> 'TreeNode':
if not root:
return None
if root.val <= p.val:
return self.inorderSuccessor(root.right)
else:
left = self.inorderSuccessor(root.left)
return left if left else rootSolution 2
Iterative:
class Solution:
def inorderSuccessor(self, root: 'TreeNode', p: 'TreeNode') -> 'TreeNode':
res = None
while root:
if not root:
return res
if root.val <= p.val:
root = root.right
else:
res = root
root = root.left
return res94. Binary Tree Inorder Traversal
Solution 1
Recursive
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
if not root: return None
res = []
left = self.inorderTraversal(root.left)
if left:
res += left
res.append(root.val)
right = self.inorderTraversal(root.right)
if right:
res += right
return resSolution 2
Iterative
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return []
stack = [root]
res = []
while stack:
cur = stack.pop()
if cur.right:
stack.append(cur.right)
if cur.left:
stack.append(TreeNode(cur.val))
stack.append(cur.left)
else:
res.append(cur.val)
return res