【大厂面试真题】系列,带你攻克大厂面试真题,秒变offer收割机!
?今日问题:编码实现二叉树深度优先遍历
??一起看看文心快码Baidu Comate给出的答案吧!如果这个问题你也会,也可以在评论区写出你的答案哦~
@comate
二叉树的深度优先遍历(Depth-First Search,DFS)通常有三种方式:前序遍历(Pre-order Traversal)、中序遍历(In-order Traversal)和后序遍历(Post-order Traversal)。
这里,我将给出Python语言的示例代码,分别实现这三种遍历方式。
首先,我们定义一个简单的二叉树节点类:
class TreeNode:
def __init__(self, value=0, left=None, right=None):
self.value = value
self.left = left
self.right = right
接下来,我们实现前序遍历、中序遍历和后序遍历:
1.前序遍历(根-左-右):
def preorder_traversal(root):
if root is None:
return []
result = [root.value] # 访问根节点
result += preorder_traversal(root.left) # 递归遍历左子树
result += preorder_traversal(root.right) # 递归遍历右子树
return result
2.中序遍历(左-根-右):
def inorder_traversal(root):
if root is None:
return []
result = inorder_traversal(root.left) # 递归遍历左子树
result += [root.value] # 访问根节点
result += inorder_traversal(root.right) # 递归遍历右子树
return result
3.后序遍历(左-右-根):
def postorder_traversal(root):
if root is None:
return []
result = postorder_traversal(root.left) # 递归遍历左子树
result += postorder_traversal(root.right) # 递归遍历右子树
result += [root.value] # 访问根节点
return result
现在,你可以使用这些函数来遍历二叉树了。例如:
# 创建一个简单的二叉树作为示例
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("Preorder Traversal:", preorder_traversal(root))
print("Inorder Traversal:", inorder_traversal(root))
print("Postorder Traversal:", postorder_traversal(root))