写一段深度优先搜索代码
时间: 2024-09-20 19:09:45 浏览: 30
SD.zip_深度优先搜索
当然可以。这里是一个简单的Python深度优先搜索(DFS)遍历二叉树的例子:
```python
class Node:
def __init__(self, val=None, left=None, right=None):
self.val = val
self.left = left
self.right = right
def dfs(root):
if root is None:
return []
visited = [root]
stack = [root]
while stack:
node = stack.pop()
print(node.val) # 打印当前节点值
if node.right is not None:
stack.append(node.right)
if node.left is not None:
stack.append(node.left)
# 使用示例
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
dfs(root)
```
这段代码首先检查根节点是否存在,如果存在则将根节点放入已访问列表和栈中。接着,它进入一个循环,每次从栈中弹出一个节点并打印其值,然后按照左子树-右子树的顺序将其子节点压入栈中。这样就能保证先访问所有左分支再访问右分支,体现了深度优先的特点。
阅读全文