头图

 文心快码(BaiduComate)是基于百度文心大模型,在研发全流程全场景下为开发者提供辅助建议的智能代码助手。结合百度积累多年的编程现场大数据、外部优秀开源数据,可为开发者生成更符合实际研发场景的优秀代码,提升编码效率,释放“十倍”软件生产力。

如果您对【文心快码企业版】感兴趣,希望获取更多详细信息, 👉点击进入企业服务咨询

我们会尽快安排专业人员与您取得联系!我们期待与您建立联系,为您的企业带来更高效、更智能的工作体验。

🔍【大厂面试真题】系列,带你攻克大厂面试真题,秒变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))

文心快码
1 声望1 粉丝