摘要:左子树右子树非空左孩子入队非空右孩子入队如果根节点为空,则返回空列表模拟一个队列储存节点首先将根节点入队列表为空时,循环终止非空左孩子入队非空右孩子入队
class TreeNode:
</>复制代码
def __init__(self, value=None, left=None, right=None):
self.value = value
self.left = left # 左子树
self.right = right # 右子树
node1 = TreeNode("A",
</>复制代码
TreeNode("B",
TreeNode("D"),
TreeNode("E")
),
TreeNode("C",
TreeNode("F"),
TreeNode("G")
)
)
def preTraverse(root):
</>复制代码
if root is None:
return
print(root.value)
preTraverse(root.left)
preTraverse(root.right)
def midTraverse(root):
</>复制代码
if root is None:
return
midTraverse(root.left)
print(root.value)
midTraverse(root.right)
def afterTraverse(root):
</>复制代码
if root is None:
return
afterTraverse(root.left)
afterTraverse(root.right)
print(root.value)
def dfs(root):
</>复制代码
res = []
if root is None:
return res
q = []
q.append(root)
while len(q) > 0:
r = q.pop()
print(r.value)
if r.left is not None:
# 非空左孩子入队
q.append(r.left)
if r.right is not None:
# 非空右孩子入队
q.append(r.right)
res.append(r.value)
return res
def bfs(root):
</>复制代码
# write your code here
res = []
# 如果根节点为空,则返回空列表
if root is None:
return res
# 模拟一个队列储存节点
q = []
# 首先将根节点入队
q.append(root)
# 列表为空时,循环终止
while len(q) > 0:
length = len(q)
r = q.pop(0)
print(r.value)
if r.left is not None:
# 非空左孩子入队
q.append(r.left)
if r.right is not None:
# 非空右孩子入队
q.append(r.right)
res.append(r.value)
return res
dfs(node1)
print("-------------------")
bfs(node1)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44984.html
摘要:算法前端发展的再快,也不要忘记精进自己的算法,算法是灵魂和核心。我会把我刷过的算法题总结归类,不断完善。 算法 前端发展的再快,也不要忘记精进自己的算法,算法是灵魂和核心。我会把我刷过的算法题总结归类,不断完善。欢迎大家关注。 数组和堆栈 数组去重 旋转数组 如何快速找出两个数之和等于某一个值的两个数? 快排 排序算法大总结 快速找到数组中的最大值 多维数组的展开 二分查找 有效的括...
阅读 971·2021-10-13 09:39
阅读 3806·2021-10-12 10:12
阅读 1948·2021-08-13 15:07
阅读 1079·2019-08-29 15:31
阅读 2957·2019-08-26 13:25
阅读 1859·2019-08-23 18:38
阅读 1969·2019-08-23 18:25
阅读 1918·2019-08-23 17:20
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要