返回

将二叉树从上至下打印,看代码秒懂!

后端







### 从上往下打印二叉树

二叉树是一种重要的数据结构,广泛应用于计算机科学的各个领域。为了对二叉树进行有效的处理,我们经常需要将二叉树从上至下打印出来。

#### 方法一:广度优先搜索

广度优先搜索(BFS)是一种用于遍历二叉树的算法。BFS的思路是先访问当前节点的子节点,然后再访问其子节点的子节点,依此类推。

可以使用队列来实现广度优先搜索。首先,将当前节点入队。然后,不断地从队列中取出节点,并将其子节点入队。重复这个过程,直到队列为空。

在Python中,可以使用以下代码来实现广度优先搜索:

```python
def BFS(root):
    queue = [root]
    while queue:
        node = queue.pop(0)
        print(node.val)
        if node.left:
            queue.append(node.left)
        if node.right:
            queue.append(node.right)

方法二:深度优先搜索

深度优先搜索(DFS)是一种用于遍历二叉树的另一种算法。DFS的思路是先访问当前节点的子节点,然后再访问其子节点的子节点,依此类推。

可以使用栈来实现深度优先搜索。首先,将当前节点压入栈。然后,不断地从栈中弹出节点,并将其子节点压入栈。重复这个过程,直到栈为空。

在Python中,可以使用以下代码来实现深度优先搜索:

def DFS(root):
    stack = [root]
    while stack:
        node = stack.pop()
        print(node.val)
        if node.left:
            stack.append(node.left)
        if node.right:
            stack.append(node.right)

时间复杂度

广度优先搜索和深度优先搜索的时间复杂度都是O(n),其中n是二叉树的节点数。

空间复杂度

广度优先搜索的空间复杂度是O(n),其中n是二叉树的节点数。这是因为广度优先搜索需要使用队列来存储节点。

深度优先搜索的空间复杂度是O(h),其中h是二叉树的高度。这是因为深度优先搜索需要使用栈来存储节点。

应用

广度优先搜索和深度优先搜索算法可以广泛地应用于各种问题中,包括:

  • 图形搜索
  • 路径查找
  • 最短路径计算
  • 连通分量检测
  • 最小生成树计算
  • 二叉树遍历