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

   2024-10-01 4210
核心提示:在Python中,可以通过递归或者栈来实现树的深度优先搜索,通过队列来实现树的广度优先搜索。首先,定义一个TreeNode类表示树节点

在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 dequedef 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)

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

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号