程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

文心快码帮你解大厂面试题:编码实现二叉树深度优先遍历

balukai 2025-01-07 10:43:52 文章精选 7 ℃

【大厂面试真题】系列,带你攻克大厂面试真题,秒变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))
最近发表
标签列表