二叉树的前中后序遍历:
1.二叉树的定义:(要会默写呀!!)
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
2.前序遍历:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=[]
def Traversal(root,res):
if not root:
return
res.append(root.val)
Traversal(root.left,res)
Traversal(root.right,res)
Traversal(root,res)
return res
3.中序遍历
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=[]
def Traversal(root):
if not root:
return
Traversal(root.left)
res.append(root.val)
Traversal(root.right)
Traversal(root)
return res
4.后序遍历:
class Solution:
def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=[]
def Traversal(root):
if not root:
return
Traversal(root.left)
Traversal(root.right)
res.append(root.val)
Traversal(root)
return res
总结:写代码的时候,二叉树的前中后序遍历都是基于中间节点来说的,那么中间节点写的位置,就应该输出的位置,左遍历:就是写向左边的遍历Traversal(root.left),右遍历:就是写向右边的遍历Traversal(root.right)。背是挺好背的。。。迭代法就先放放吧,放过自己今天。。。