二叉树的学习中需要注重以下几个重点
(1)二叉树的种类
(2)二叉树的遍历
(3)二叉树的存储方式
(4)二叉树的定义
二叉树的定义:
class treeNode:
def __init__(self,val=0,left=None,right=None):
self.val = val
self.left = left
self.right = right
递归遍历三部曲:
1,确定递归函数的参数以及返回值
2,确定终止条件
3,确定单层递归的逻辑
leetcode:144. 二叉树的前序遍历(中左右)
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res = []
def traversal(root:TreeNode):
if(root == None):return
res.append(root.val)
traversal(root.left)
traversal(root.right)
traversal(root)
return res
leetcde 145. 二叉树的后序遍历(左右中)
class Solution:
def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res = []
def traversal(root:TreeNode):
if(root == None):
return
traversal(root.left)
traversal(root.right)
res.append(root.val)
traversal(root)
return res
leetcode 94. 二叉树的中序遍历(左中右)
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res = []
def traversal(root:TreeNode):
if(root == None):
return
traversal(root.left)
res.append(root.val)
traversal(root.right)
traversal(root)
return res