前言
每日刷题,从己做起。
深度优先遍历:前序,中序,后序。可将其划分为“中左右”,“左中右”,“左右中”。划分的重点是中的位置。
一、前序遍历
calss Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
while stack:
node = stack.pop()
result.append(node.val)
if node.left:
stack.append()
left = self.preorderTraversal(root.left)
right = right.preorderTraversal(root.right)
return [root.val] + left + right
二、中序遍历
class Solution:
def inorderTraversal(self, root:Optional[TreeNode]) -> List[int]
if not root:
return []
stack = []
result = []
cur = root
while cur or stack:
if cur:
stack.append(cur)
cur = cur.left
else:
cur = stack.pop()
result.append(cur.val)
cur = cur.right
return result
三、后序遍历
class Solution:
def postorderTraversal(self, root: Optional[TreeNode]) ->List[int]
if not root:
return []
stack = [root]
result = []
while stack:
node = stack.pop()
result.append(node.val)
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
return result