返回

揭秘LeetCode之旅:巧解226. 翻转二叉树,102. 二叉树的层序遍历,轻松解锁编程难题!

前端

在LeetCode的挑战之旅中,算法是不可或缺的必备技能,而二叉树无疑是算法领域中的一块绊脚石。今天,我们就来共同探索LeetCode的两道经典算法题:226. 翻转二叉树和102. 二叉树的层序遍历,让你在算法的道路上乘风破浪,畅通无阻!

226. 翻转二叉树

翻转二叉树,顾名思义,就是将一颗二叉树的左右子树互换。这个看似简单的操作,却蕴藏着深刻的算法思想。

什么是翻转二叉树?

翻转二叉树,就是将一颗二叉树的左右子节点相互交互一下。举个例子,下图是一棵普通的二叉树:

        1
      /   \
     2     3
    / \   / \
   4   5 6   7

翻转这棵二叉树后,就变成了:

        1
      /   \
     3     2
    / \   / \
   7   6 5   4

如何实现翻转二叉树?

翻转二叉树可以采用递归的方法来实现。递归函数的定义如下:

def invertTree(root):
    if root is None:
        return None

    left = invertTree(root.left)
    right = invertTree(root.right)

    root.left = right
    root.right = left

    return root

102. 二叉树的层序遍历

二叉树的层序遍历,是一种从上到下、从左到右遍历二叉树的方法。这种遍历方法可以帮助我们以一种有组织的方式访问二叉树中的所有节点。

如何实现二叉树的层序遍历?

二叉树的层序遍历可以采用广度优先搜索(BFS)算法来实现。BFS算法的定义如下:

def levelOrder(root):
    if root is None:
        return []

    queue = [root]
    result = []

    while queue:
        level = []

        for _ in range(len(queue)):
            node = queue.pop(0)
            level.append(node.val)

            if node.left:
                queue.append(node.left)

            if node.right:
                queue.append(node.right)

        result.append(level)

    return result

掌握了这两种算法,你就能在LeetCode的旅程中披荆斩棘,轻松解锁编程难题,成就一番算法传奇。让我们一起携手并进,在算法的海洋中遨游,乘风破浪,勇攀高峰!