当前位置: 首页 > wzjs >正文

有哪些网站做的好处重庆seo哪个强

有哪些网站做的好处,重庆seo哪个强,网站建设代理平台,北京市建设厅门户网站6层序遍历为 1 2 3 4 5 6 7 的二叉树,其中序遍历的递归调用的过程实际上是什么样的? // 中序遍历 const inorder (root) > {if (!root) {return;}inorder(root.left);res.push(root.val);inorder(root.right);}递归调用的完整展开 为了更清晰地看到…

层序遍历为 1 2 3 4 5 6 7 的二叉树,其中序遍历的递归调用的过程实际上是什么样的?

// 中序遍历
const inorder = (root) => {if (!root) {return;}inorder(root.left);res.push(root.val);inorder(root.right);}

递归调用的完整展开

为了更清晰地看到所有执行的语句,我们可以将所有递归调用展开:

inorder(1):if (!1)falseinorder(1.left)inorder(2):if (!2)falseinorder(2.left)inorder(4):if (!4)falseinorder(4.left)inorder(null):if (!null)returnres.push(4)inorder(4.right)inorder(null):if (!null)returnres.push(2)inorder(2.right)inorder(5):if (!5)falseinorder(5.left)inorder(null):if (!null)returnres.push(5)inorder(5.right)inorder(null):if (!null)returnres.push(1)inorder(1.right)inorder(3):if (!3)falseinorder(3.left)inorder(6):if (!6)falseinorder(6.left)inorder(null):if (!null)returnres.push(6)inorder(6.right)inorder(null):if (!null)returnres.push(3)inorder(3.right)inorder(7):if (!7)falseinorder(7.left)inorder(null):if (!null)returnres.push(7)inorder(7.right)inorder(null):if (!null)return

初始理解

首先,我们需要明确几个概念:

  1. 层序遍历:这是指按照树的层次从上到下、从左到右依次访问节点。给定的层序遍历序列是 1 2 3 4 5 6 7,这意味着:

    • 第一层:1(根节点)
    • 第二层:2(左子节点),3(右子节点)
    • 第三层:4(2的左子节点),5(2的右子节点),6(3的左子节点),7(3的右子节点)

    因此,二叉树的结构如下:

        1/ \2   3/ \ / \4  5 6 7
  1. 中序遍历:这是指按照“左子树 - 根节点 - 右子树”的顺序访问节点。对于上面的二叉树,中序遍历的结果应该是 4 2 5 1 6 3 7

  2. 递归过程:给定的中序遍历的递归代码会按照上述顺序访问节点。我们需要将递归调用展开,看看具体的执行顺序。

递归展开

让我们从根节点 1 开始,逐步展开递归调用。我们将 inorder(root) 替换为具体的节点值来表示当前的 root

初始调用:inorder(1)

1. inorder(1)
  • root1,不为 null,所以:
    • inorder(1.left):即 inorder(2)
    • res.push(1.val):即 res.push(1)
    • inorder(1.right):即 inorder(3)
2. inorder(2)
  • root2,不为 null,所以:
    • inorder(2.left):即 inorder(4)
    • res.push(2.val):即 res.push(2)
    • inorder(2.right):即 inorder(5)
3. inorder(4)
  • root4,不为 null,所以:
    • inorder(4.left)4.leftnullinorder(null) 直接返回
    • res.push(4.val):即 res.push(4)
    • inorder(4.right)4.rightnullinorder(null) 直接返回
  • 执行顺序:
    • inorder(null)4.left):无操作
    • res.push(4)
    • inorder(null)4.right):无操作
  • inorder(4) 完成
回到 inorder(2)
  • 已经执行了 inorder(4),接下来:
    • res.push(2)
    • inorder(5)
4. inorder(5)
  • root5,不为 null,所以:
    • inorder(5.left)5.leftnullinorder(null) 直接返回
    • res.push(5.val):即 res.push(5)
    • inorder(5.right)5.rightnullinorder(null) 直接返回
  • 执行顺序:
    • inorder(null)5.left):无操作
    • res.push(5)
    • inorder(null)5.right):无操作
  • inorder(5) 完成
回到 inorder(2)
  • 已经执行了 inorder(5)inorder(2) 完成
回到 inorder(1)
  • 已经执行了 inorder(2),接下来:
    • res.push(1)
    • inorder(3)
5. inorder(3)
  • root3,不为 null,所以:
    • inorder(3.left):即 inorder(6)
    • res.push(3.val):即 res.push(3)
    • inorder(3.right):即 inorder(7)
6. inorder(6)
  • root6,不为 null,所以:
    • inorder(6.left)6.leftnullinorder(null) 直接返回
    • res.push(6.val):即 res.push(6)
    • inorder(6.right)6.rightnullinorder(null) 直接返回
  • 执行顺序:
    • inorder(null)6.left):无操作
    • res.push(6)
    • inorder(null)6.right):无操作
  • inorder(6) 完成
回到 inorder(3)
  • 已经执行了 inorder(6),接下来:
    • res.push(3)
    • inorder(7)
7. inorder(7)
  • root7,不为 null,所以:
    • inorder(7.left)7.leftnullinorder(null) 直接返回
    • res.push(7.val):即 res.push(7)
    • inorder(7.right)7.rightnullinorder(null) 直接返回
  • 执行顺序:
    • inorder(null)7.left):无操作
    • res.push(7)
    • inorder(null)7.right):无操作
  • inorder(7) 完成
回到 inorder(3)
  • 已经执行了 inorder(7)inorder(3) 完成
回到 inorder(1)
  • 已经执行了 inorder(3)inorder(1) 完成

执行顺序总结

按照上述展开,res.push 的执行顺序(即中序遍历的顺序)如下:

  1. inorder(4)
    • res.push(4)
  2. inorder(2)
    • res.push(2)
  3. inorder(5)
    • res.push(5)
  4. inorder(1)
    • res.push(1)
  5. inorder(6)
    • res.push(6)
  6. inorder(3)
    • res.push(3)
  7. inorder(7)
    • res.push(7)

因此,res 中的最终顺序是 [4, 2, 5, 1, 6, 3, 7]

实际执行的 res.push 语句顺序

从上面的展开中,提取所有 res.push 的语句:

  1. res.push(4)
  2. res.push(2)
  3. res.push(5)
  4. res.push(1)
  5. res.push(6)
  6. res.push(3)
  7. res.push(7)

验证中序遍历

让我们手动进行中序遍历以验证:

  • 从根节点 1 开始:
    • 遍历左子树 2
      • 遍历 2 的左子树 4
        • 4 无左子节点,访问 4
        • 4 无右子节点
      • 访问 2
      • 遍历 2 的右子树 5
        • 5 无左子节点,访问 5
        • 5 无右子节点
    • 访问 1
    • 遍历右子树 3
      • 遍历 3 的左子树 6
        • 6 无左子节点,访问 6
        • 6 无右子节点
      • 访问 3
      • 遍历 3 的右子树 7
        • 7 无左子节点,访问 7
        • 7 无右子节点

访问顺序:4, 2, 5, 1, 6, 3, 7,与递归展开的结果一致。

最终答案

将所有的递归调用展开后,实际执行的 res.push 语句的顺序如下:

  1. res.push(4)
  2. res.push(2)
  3. res.push(5)
  4. res.push(1)
  5. res.push(6)
  6. res.push(3)
  7. res.push(7)

因此,中序遍历的结果是 [4, 2, 5, 1, 6, 3, 7]

http://www.dtcms.com/wzjs/333479.html

相关文章:

  • 高端网站建设公司有哪些项目合肥360seo排名
  • 网站开发阶段网络营销有什么方式
  • 网站开源企业网络推广技巧
  • 北京便宜的网站建设关键词优化设计
  • 做网站的空间是什么手机百度下载免费安装
  • 网站建设提成百度推广收费标准
  • 传奇手游代理平台seo查询源码
  • 广告毕业设计作品网站长尾词排名优化软件
  • 广东宇晟建设工程有限公司网站如何自己创建一个网站
  • 移动端比较好的网站html网页制作
  • 做视频网站带宽宁波seo哪家好
  • 昆山网页网站制作山西百度查关键词排名
  • 网站公司成功案例怎么写360优化大师官方下载手机
  • 坑人网站怎么做学技术包分配的培训机构
  • 小企业一键做网站网络营销和传统营销的区别和联系
  • 如何用自己电脑做网站页面百度搜索引擎服务项目
  • 网站制作的主要技术自媒体人专用网站
  • 大气的化妆品网站名如何注册一个自己的网站
  • 台州手机网站建设seo和sem是什么
  • 新闻网站伪原创同义词中山网站seo优化
  • wordpress菜单竖排seo网站推广经理招聘
  • 传统营销渠道有哪些seo研究中心官网
  • 标智客logo在线设计生成器优化大师怎么强力卸载
  • 做网站需要会写代码6百度浏览器
  • 微信网站开发平台企业宣传片
  • 网站制作职责站长平台百度
  • 做模特网站运营推广是做什么的
  • 怎么自己做网站赚钱上海网站制作开发
  • 青岛商城网站建设怎样做网站的优化、排名
  • 吴江做网站的公司百度seo关键词