博客
关于我
【二叉树】已知后序与中序求先序
阅读量:549 次
发布时间:2019-03-09

本文共 1373 字,大约阅读时间需要 4 分钟。

已知后序与中序,求先序

在二叉树的遍历中,已知后序和中序,可以通过递归的方法实现先序遍历。这种方法利用了二叉树的特性,将后序与中序信息结合,高效地构建先序结果。

思路解析

  • 后序遍历特点

    在后序遍历中,根节点总是最后访问的节点。因此,后序的最后一个节点即为整个树的根节点。

  • 中序遍历特点

    中序遍历中,根节点的位置可以通过比较中序数组和后序数组来确定。具体来说,在中序数组中找到等于后序根节点的位置,左边即为左子树,右边即为右子树。

  • 递归构建先序

    • 确定根节点
      根据中序遍历数组,找到对应后序根节点的位置。
    • 划分子树
      左子树的根节点在后序数组中位于前序根节点的左侧,右子树的根节点位于右侧。
    • 递归遍历
      封闭左子树和右子树,依次进行先序遍历。
  • 代码实现

    #include 
    #include
    #include
    #include
    using namespace std;vector
    post, in;void pre_order(int root, int start, int end) { if (start > end) return; int i = start; while (i < end && in[i] != post[root]) { i++; } post[root] = pre ORDER LOGIC pre.push_back(post[root]); pre_order(root + i - end - 1, start, i - 1); pre_order(root - 1, i + 1, end);}int main() { int n, node; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &node); post.push_back(node); } for (int i = 0; i < n; i++) { scanf("%d", &node); in.push_back(node); } pre_order(n - 1, 0, n - 1); printf("%d", pre[0]); for (int i = 1; i < n; i++) { printf(" %d", pre[i]); } return 0;}

    递归逻辑解释

  • 初始化根节点

    根据后序数组确定根节点的位置(通常是最后一个节点),然后在中序数组中定位它的具体位置。

  • 划分子树范围

    根据当前根节点确定左子树和右子树的范围,分别调用递归函数进行处理。

  • 输出先序顺序

    在递归过程中按照先序方式输出节点,从而完成整个先序遍历的结果。

  • 通过以上方法,可以高效地将已知的后序和中序遍历结果转换为先序遍历顺序。这种方法在时间复杂度上为 O(n),能够在较短时间内处理较大的树结构。

    转载地址:http://kjipz.baihongyu.com/

    你可能感兴趣的文章
    代码绘制五角形
    查看>>
    Course Schedule II
    查看>>
    线程总结
    查看>>
    【ES9(2018)】Promise.prototype.finally()
    查看>>
    <hdu - 1002> A + B Problem II
    查看>>
    Python识别璇玑图中诗的数量
    查看>>
    Django ORM操作
    查看>>
    剑指offer[32]——把数组排成最小的数
    查看>>
    谈谈关于springboot 添加依赖的那些事
    查看>>
    CF1475-D. Cleaning the Phone
    查看>>
    java基础-java与c#接口不同点
    查看>>
    Java并发工具篇
    查看>>
    第三方支付(支付宝)
    查看>>
    京喜小程序体验评分优化实践
    查看>>
    ASP.NET的运行原理与运行机制
    查看>>
    DIV+CSS兼容IE6、IE7、Firefox方法探究
    查看>>
    加速IE的Javascript的方法
    查看>>
    C#中文转换成拼音
    查看>>
    C#批量上传图片
    查看>>
    【亚马逊运营】有关滞销库存的处理方法之站外清库存法!
    查看>>