如题,talk is cheap
##中序遍历
class Solution1:
def inorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return []
return self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right)
class Solution2:
def inorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return []
stack = []
result = []
while stack or root:
while root:
stack.append(root)
root = root.left
root = stack.pop()
result.append(root.val)
root = root.right
return result
##前序遍历
class Solution3:
def preorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return []
return [root.val] + self.preorderTraversal(root.left) + self.preorderTraversal(root.right)
class Solution4:
def preorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return []
stack = [root]
result = []
while stack:
element = stack.pop()
result.append(element.val)
if element.right:
stack.append(element.right)
if element.left:
stack.append(element.left)
return result
##后序遍历
class Solution5:
def postorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return []
return self.postorderTraversal(root.left) + self.postorderTraversal(root.right) + [root.val]
class Solution6:
def postorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return []
stack = [root]
result = []
while stack:
element = stack.pop()
result.append(element.val)
if element.left:
stack.append(element.left)
if element.right:
stack.append(element.right)
return result[::-1]