摘要:左子树右子树非空左孩子入队非空右孩子入队如果根节点为空,则返回空列表模拟一个队列储存节点首先将根节点入队列表为空时,循环终止非空左孩子入队非空右孩子入队
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
摘要:算法前端发展的再快,也不要忘记精进自己的算法,算法是灵魂和核心。我会把我刷过的算法题总结归类,不断完善。 算法 前端发展的再快,也不要忘记精进自己的算法,算法是灵魂和核心。我会把我刷过的算法题总结归类,不断完善。欢迎大家关注。 数组和堆栈 数组去重 旋转数组 如何快速找出两个数之和等于某一个值的两个数? 快排 排序算法大总结 快速找到数组中的最大值 多维数组的展开 二分查找 有效的括...
阅读 799·2021-10-13 09:39
阅读 3674·2021-10-12 10:12
阅读 1705·2021-08-13 15:07
阅读 985·2019-08-29 15:31
阅读 2864·2019-08-26 13:25
阅读 1755·2019-08-23 18:38
阅读 1859·2019-08-23 18:25
阅读 1844·2019-08-23 17:20