Python TreeNode如何实现树的深度优先和广度优先搜索

avatar
作者
筋斗云
阅读量:0

在Python中,可以通过递归或者栈来实现树的深度优先搜索,通过队列来实现树的广度优先搜索。

首先,定义一个TreeNode类表示树节点:

class TreeNode:     def __init__(self, value):         self.value = value         self.left = None         self.right = None 

接下来,定义一个函数来实现深度优先搜索:

def dfs(node):     if node is None:         return     print(node.value)     dfs(node.left)     dfs(node.right) 

定义一个函数来实现广度优先搜索:

from collections import deque  def bfs(node):     if node is None:         return     queue = deque()     queue.append(node)     while queue:         current = queue.popleft()         print(current.value)         if current.left:             queue.append(current.left)         if current.right:             queue.append(current.right) 

接下来,创建一个二叉树并测试深度优先搜索和广度优先搜索:

root = TreeNode(1) root.left = TreeNode(2) root.right = TreeNode(3) root.left.left = TreeNode(4) root.left.right = TreeNode(5) root.right.left = TreeNode(6) root.right.right = TreeNode(7)  print("深度优先搜索:") dfs(root)  print("\n广度优先搜索:") bfs(root) 

以上代码演示了如何实现树的深度优先搜索和广度优先搜索。深度优先搜索会先遍历完整的左子树,然后再遍历右子树,而广度优先搜索会先遍历同一层的所有节点,再遍历下一层的节点。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!