一文带你走进二叉树(三)

62 阅读2分钟

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

前言:上文了解到了二叉树的概念和遍历,接下来带领大家温习一下并学习二叉树的查找~

二叉树概念

  • 二叉树:每个节点最多只能有两个子节点的一种形式
  • 二叉树的子节点分为左节点和右节点

二叉树的查找

要求(查找指定的节点)

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

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

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

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

分析:

  1. 前序查找

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

    1. 判断当前节点的左子节点是否为空,如果不为空,则递归中序查找
    2. 若是找到,则返回,若是没有找到,则与当前节点比较,若是当前节点则返回当前节点,否则进行进行右递归的中序查找
    3. 若是有递归中序查找,查找到则返回,否则返回null
  3. 后序查找

    1. 判断当前节点的左子节点是否为空,如果不为空,则递归后序查找
    2. 若是找到,则返回,若是没有找到,则判断当前节点的右子节点是否为孔,若不为空,则右递归进行后序查找,如果查找到,就返回
    3. 与当前节点进行比较,如果是则返回,否则返回null

对算法类感兴趣的小伙伴,可以私聊博主VX:lj1727259084,让我们一起学习进步~