leetcode94. 二叉树的中序遍历
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def __init__(self):
self.result = []
def inorderTraversal(self, root: TreeNode) -> list[int]:
"""
中序 左 根 右
"""
if root is None:
return self.result
self.inorderTraversal(root.left)
self.result.append(root.val)
self.inorderTraversal(root.right)
return self.result
144. 二叉树的前序遍历
144. 二叉树的前序遍历
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def __init__(self):
self.results = list()
def preorderTraversal(self, root: TreeNode) -> list[int]:
"""
前序遍历 根 左 右
"""
if root is None:
return self.results
self.results.append(root.val)
self.preorderTraversal(root.left)
self.preorderTraversal(root.right)
return self.results
590. N 叉树的后序遍历
590. N 叉树的后序遍历
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
class Solution:
def postorder(self, root: 'Node') -> list[int]:
"""
后序遍历 左 右 根
"""
results = list()
def dfs(root):
if root is None:
return
for ch in root.children:
dfs(ch)
results.append(root.val)
dfs(root)
return results
589. N 叉树的前序遍历
589. N 叉树的前序遍历
class Solution:
def preorder(self, root: 'Node') -> list[int]:
"""
前序遍历 根 左 右
"""
results = list()
if root is None:
return results
def dfs(node):
if not node:
return results
results.append(node.val)
for ch in node.children:
dfs(ch)
dfs(root)
return results
429. N 叉树的层序遍历
429. N 叉树的层序遍历
class Solution:
def levelOrder(self, root: 'Node') -> list[list[int]]:
"""
思路: 使用广度搜索
维护一个双端队列 队列中只存储当前层级的节点
遍历队列
- 每次开始时 记录当前队列中的元素总量 即当前层级的节点总数
- 维护一个level级别的列表 每次将同一层级节点的元素追加进来
- 遍历每个节点的子节点 将其加入到队列的尾端 准备进行下一轮遍历
"""
results = list()
if not root:
return results
double_quue = list()
double_quue.append(root)
while double_quue:
level_list = list()
current_level_no = len(double_quue)
for index in range(0, current_level_no):
level_list.append(double_quue[index].val)
for ch in double_quue[index].children:
double_quue.append(ch)
double_quue = double_quue[current_level_no:]
results.append(level_list)
return results