二叉树的遍历算法之先序遍历

我们先来熟悉一下二叉树的概念:二叉树是‌每个节点最多有两个子树‌的树形数据结构,通常分为左子树和右子树。

先序遍历

先序遍历就是先访问根节点,然后遍历左子树,最后遍历右子树。

二叉树的先序遍历的递归实现

该版本是二叉树深度优先搜索最常见的实现方式。

其基本思路是:

  1. 访问当前节点。
  2. 递归遍历当前节点的左子树。(由于栈的先进后出性质,所以先将右子树入栈,后将左子树入栈,出栈的时候是左子树先出栈,右子树后出栈,符合先序遍历的顺序。)
  3. 递归遍历当前节点的右子树。
复制代码
def dfs_preorder(root):
    if root is None:
        return
    print(root.val)             # 访问当前节点。
    dfs_preorder(root.left)     # 递归遍历当前节点的左子树。
    dfs_preorder(root.right)    # 递归遍历当前节点的右子树。
相关推荐
鹿角片ljp18 分钟前
LeetCode 236. 二叉树的最近公共祖先|递归后序
算法
luj_176829 分钟前
大律师考核应重能力与科技素养
c语言·开发语言·c++·经验分享·算法
无定义_34 分钟前
Floyd——Warshall
算法
带多刺的玫瑰1 小时前
Leecode#9刷题之回文数
数据结构·算法
泯泷2 小时前
手搓JSVM第 5 篇:写第一个编译器:从 AST 生成 IR
前端·javascript·算法
泯泷2 小时前
手搓JSVM第 7 篇:控制流:if、while 与 jump
前端·javascript·算法
泯泷2 小时前
手搓JSVM第 6 篇:把 IR 编成字节码:emit 与 label fixup
前端·javascript·算法
泯泷2 小时前
手搓JSVM第 3 篇:从栈式 VM 到寄存器式 VM:为什么我们选择寄存器
前端·javascript·算法
泯泷2 小时前
第 4 篇:让 VM 支持变量:Slot、Environment 与 TDZ
前端·javascript·算法
Asize3 小时前
54. 螺旋矩阵
算法