一文带你初识二叉树(二)

57 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第二十二天,点击查看活动详情

二叉树遍历步骤(前、中、后序)

image-20220910101429183

  1. 创建一个二叉树

  2. 前序遍历

    1. 先输出当前节点(初始为根节点开始遍历)
    2. 判断==左子节点==是否为空,为空,则递归继续前序遍历
    3. 判断==右子节点==是否为空,为空,则递归继续前序遍历
  3. 中序遍历

    1. 若当前节点的==左子节点==不为空,则递归中序遍历
    2. 输出当前节点
    3. 若当前节点的==右子节点==不为空,则递归中序遍历
  4. 后续遍历

    1. 若当前节点的==左子节点==不为空,则递归后序遍历
    2. 若当前节点的==右子节点==不为空,则递归后序遍历
    3. 输出当前的节点

添加节点

image-20220910093606628

  1. 在3号节点 "卢俊" , 增加一个左子节点 [5, 关胜]

  2. 查看遍历结果

    • 前序:1 、2、3、5、4
    • 中序:2、1、5、3、4
    • 后续:2、5、4、3、1

二叉树的查找

要求(查找指定的节点)

  1. 请编写前序查找,中序查找和后序查找的方法

  2. 并分别使用三种查找方式,查找 heroNO = 5 的节点

  3. 并分析各种查找方式,分别比较了多少次

    • 前序:
    • 中序:
    • 后序:

分析:

  1. 前序查找

    1. 先判断当前节点的 no 是否等于要查找的
    2. 若是相等,则返回当前节点
    3. 若是不相等的,则判断当前节点的左子节点是否为空,如果不为空,则递归前序查找
    4. 若左递归前序查找,找到节点,则返回,否则继续判断,当前节点的右子节点是否为空,不为空,则继续向右递归查找。