-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path94_BinartTreeInorderTraversal.py
40 lines (35 loc) · 1.29 KB
/
94_BinartTreeInorderTraversal.py
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
40
# https://leetcode.com/problems/binary-tree-inorder-traversal/
# 2021 12.07
# 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: Optional[TreeNode]) -> List[int]:
# # v1 Recursive inorder traversal
# if root == None:
# return []
# ret=[root.val]
# if root.left:
# ret=self.inorderTraversal(root.left)+ret
# if root.right:
# ret=ret+self.inorderTraversal(root.right)
# return ret
# # v1.1 recursive oneliner
# return self.inorderTraversal(root.left)+[root.val]+self.inorderTraversal(root.right) if root else []
# v2 copied iterative, non-recursive using stack, best practise
ret =[]
stack=[]
while stack or root:
while root:
stack.append(root)
root = root.left
root=stack.pop()
ret.append(root.val)
root=root.right
return ret
# 2022年09月08日 10:47:33
# recursive onelienr
return self.inorderTraversal(root.left)+[root.val]+self.inorderTraversal(root.right) if root else []