头歌两种遍历方法建立一棵树(前序和中序)

简介: 头歌两种遍历方法建立一棵树(前序和中序)

///


#include <stdio.h>


#include <stdlib.h>


#include <string.h>


#include "ConstructTree.h"


/




/*


InPreToTree(): 由前序遍历序列和中序遍历序列构造二叉树


前序序列为pa[p1:p2]


中序序列为ia[i1:i2]


返回所构造的二叉树的根指针


*/


TNode* InPreToTree(char *pa, char *ia, int p1, int p2, int i1, int i2)


{


   /*请在BEGIN和END之间实现你的代码*/


   /*****BEGIN*****/


  if(p1>p2){


      return NULL;


  }


  TNode* root=new TNode;


  root->data=pa[p1];//将前序数组中第一个元素赋给data,前序数组第一个值都是根节点。


  root->left=NULL;


  root->right=NULL;


  int i=0;


  while(ia[i]!=pa[p1]){


      i++;


  }//查找根节点在中序数组中的位置。


//递归,每次缩小范围,将树一次一次细分。


  int llen=i-i1;//存储左子树长度


   root->left=InPreToTree(pa,ia,p1+1,p1+llen,i1,i-1);//每个根节点左右子树依次递推下去,双亲和子树的递推方法都是一样的。


   int rlen=i2-i;//存储右子树长度,两个分开存储会更好


   root->right=InPreToTree(pa,ia,p2-rlen+1,p2,i+1,i2);


   return root;


   /******END******/


   /*请不要修改[BEGIN,END]区域外的代码*/


}


void PrintPostTravel(TNode* t)


{


   if(t==NULL) return;


   if(t->left) PrintPostTravel(t->left);


   if(t->right) PrintPostTravel(t->right);


   printf("%c", t->data);


}


void DeleteTree(TNode* t)


{


   if(t==NULL) return;


   if(t->left) DeleteTree(t->left);


   if(t->right) DeleteTree(t->right);


   delete t;


}


相关文章
|
存储 程序员 编译器
|
11月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
312 10
|
存储 关系型数据库 MySQL
在 Python 中获取输入
【8月更文挑战第23天】
804 0
|
存储 算法
【树】数据结构——树和二叉树的概念&笔记
【树】数据结构——树和二叉树的概念&笔记
|
9月前
|
前端开发 API 数据库
鸿蒙开发:异步并发操作
在结合async/await进行使用的时候,有一点需要注意,await关键字必须结合async,这两个是搭配使用的,缺一不可,同步风格在使用的时候,如何获取到错误呢,毕竟没有catch方法,其实,我们可以自己创建try/catch来捕获异常。
301 3
鸿蒙开发:异步并发操作
|
分布式数据库 数据库 数据安全/隐私保护
开发者关注的数据库技术与创新,未来数据库的演进及理想数据库的构想
作为开发者,想必大家都知道在技术圈中数据库相关领域是技术开发中的重中之重,数据库技术与创新不断推动着数字化时代的发展,数据库技术正在经历着一次创新的浪潮,还有就是数据库技术的不断创新为开发者们在日常实际开发中提供了更多的可能性和好的机遇。那么本文就来简单聊聊最值得开发者关注的数据库技术与创新,包括分布式数据库、图数据库、时序数据库、区块链数据库以及AI与数据库的结合等方面,以及探讨未来数据库的演进趋势,并讨论一下在开发者心目中最理想的数据库的特征与构想。
218 3
|
安全 网络安全 网络虚拟化
优化大型企业网络架构:从核心到边缘的全面升级
大型企业在业务运作中涉及多种数据传输,涵盖办公应用、CRM/ERP系统、数据中心、云环境、物联网及安全合规等多个方面。其复杂的业务生态和全球布局要求网络架构具备高效、安全和可靠的特性。网络设计需全面考虑核心层、汇聚层和接入层的功能与冗余,同时实现内外部的有效连接,包括广域网连接、远程访问策略、云计算集成及多层次安全防护,以构建高效且可扩展的网络生态系统。
优化大型企业网络架构:从核心到边缘的全面升级
|
11月前
|
算法 决策智能
初谈背包问题——01背包
初谈背包问题——01背包
组合逻辑电路( Combinational Logic Circuit)知识点总结-3
组合逻辑电路( Combinational Logic Circuit)知识点总结
|
存储
二叉树的基本概念以及基本操作
二叉树的基本概念以及基本操作
406 2