博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DS Tree 已知后序、中序 => 建树 => 求先序
阅读量:6297 次
发布时间:2019-06-22

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

注意点:

和上一篇的差不多,注意的地方是在aftorder中找根节点的时候,是从右往左找,因此递归的时候注意参数,最好是拿纸和笔模拟一遍。

代码(主体部分):

/*    FindRoot函数:根据后序、中序建树 */Node* FindRoot(int aft_l, int aft_r, int mid_l, int mid_r){    if (aft_r - aft_l < 0) return NULL;        Node *root = new Node;        root -> num = aftorder[aft_r];        if (aft_l == aft_r)    {        root -> l = NULL;        root -> r = NULL;                return root;    }        int index;        for (index = mid_l; index <= mid_r; index++)    {        if (midorder[index] == aftorder[aft_r]) break;    }        root -> r = FindRoot(aft_r-(mid_r-index), aft_r-1, index+1, mid_r);    root -> l = FindRoot(aft_l, aft_r-(mid_r-index)-1, mid_l, index-1);        return root;}/* CalPreorder函数:根据给定的树来计算先序序列 */void CalPreorder(Node *head){    if (head == NULL) return ;        preorder[tot++] = head -> num;        CalPreorder(head -> l);    CalPreorder(head -> r);}

2016/12/21

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

你可能感兴趣的文章
变频电源要怎么测定额定容量
查看>>
git 使用笔记 oschina ,mac
查看>>
盒子模型
查看>>
Windows平台的Eclipse-javaEE-mars相关配置
查看>>
Oracle导入导出
查看>>
每日一学|数据中心spine leaf网络架构
查看>>
DockerSwarm 微服务部署
查看>>
Spring Boot 配置文件详解
查看>>
安装python3.6-pyppeteer
查看>>
yum源简单介绍及本地yum源的搭建
查看>>
java中事务的介绍
查看>>
Java常用实体类--System类
查看>>
Mysql按周,按月,按日,按小时分组统计数据
查看>>
Mac环境下sublime实现列选择或编辑的方法
查看>>
JPA使用原生SQL查询
查看>>
linux C实现mkdir功能
查看>>
angular.element()的用法
查看>>
OA系统
查看>>
Ext.data.reader.Json reader: json
查看>>
Python下Selenium PhantomJs设置header的方法
查看>>