理论基础
.需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义
1、二叉树的种类
二叉树有两种主要的形式:满二叉树和完全二叉树, 还有二叉搜索树,平衡二叉搜索树
2.存储方式
3.遍历方式
①深度优先遍历(使用栈实现)
前序遍历:中左右
中序遍历:左中右
后序遍历:左右中
②广度优先遍历(使用队列实现)
层序遍历
4.二叉树的定义
力扣144前序遍历力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
# 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 preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
left = self.preorderTraversal(root.left)
right = self.preorderTraversal(root.right)
return [root.val] + left + right
力扣94 中序遍历力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
class TreeNode(object):
def __init__(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def inorderTraversal(self, root):
if not root:
return []
left = self.inorderTraversal(root.left)
right = self.inorderTraversal(root.right)
return left + [root.val] + right
力扣145后序遍历力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
class TreeNode:
def __init__(self, val, left, right):
self.val = val
self.left = left
self.right = right
class Solution:
def postorderTraversal(self, root: TreeNode):
if not root:
return []
left = self.postorderTraversal(root.left)
right = self.postorderTraversal(root.right)
return left + right + [root.val]