Java二叉树怎么根据前序和中序推出后续
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容介绍了"Java二叉树怎么根据前序和中序推出后续"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2026年11月04日Java二叉树怎么根据前序和中序推出后续
本篇内容介绍了"Java二叉树怎么根据前序和中序推出后续"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
根据前序跟中序 => 后序
#include#include #include using namespace std;struct BTreeNode{ int _value; BTreeNode*_left; BTreeNode*_right;};//解法一BTreeNode* RebuildCode(int * PreStart, int *PreEnd, int *InStart, int *InEnd){ BTreeNode *root = new BTreeNode(); //新建节点root保存前序第一个节点为根结点 root->_value = PreStart[0]; root-> _left = NULL; root->_right = NULL; if(InStart == InEnd && *InStart == *InEnd) { return root; } //据此节点找到中序遍历此节点的位置 int *rootIn = InStart; while(*PreStart != *rootIn) { rootIn++; } //左子树的长度 int leftlen = rootIn-InStart; //重建左子树 if(leftlen > 0) { root->_left = RebuildCode( PreStart+1, PreStart+leftlen, InStart,InStart+leftlen-1); } //重建右子树 if(InStart+leftlen < InEnd) { root->_right = RebuildCode( PreStart+leftlen+1, PreEnd,InStart+leftlen+1, InEnd); } return root;}BTreeNode* RebuildTree(int *PreOrder, int *InOrder, int len){ //首先判断边界条件 if(PreOrder == NULL || InOrder == NULL || len <= 0) { return NULL; } else { return RebuildCode(PreOrder, PreOrder+len-1, InOrder, InOrder+len-1); }}//后序遍历输出二叉树序列void PostOrder(BTreeNode *root){ if(root->_left != NULL) { PostOrder(root->_left); } if(root->_right != NULL) { PostOrder(root->_right); } if(root != NULL) { cout< _value<<" "; }}int main(){ int PreOrder[8] = {1,2,4,7,3,5,6,8}; int InOrder[8] = {4,7,2,1,5,3,8,6}; PostOrder(RebuildTree(PreOrder, InOrder, 8)); cout<
根据后序跟中序 =>前序#include#include #include using namespace std;struct BTreeNode{ int _value; BTreeNode*_left; BTreeNode*_right;};//解法一BTreeNode* RebuildCode(int * PostStart, int *PostEnd, int *InStart, int *InEnd){ BTreeNode *root = new BTreeNode(); //新建节点root保存前序第一个节点为根结点 root->_value = PostEnd[0]; root-> _left = NULL; root->_right = NULL; if(InStart == InEnd && *InStart == *InEnd) { return root; } //据此节点找到中序遍历此节点的位置 int *rootIn = InStart; while(*PostEnd != *rootIn) { rootIn++; } //左子树的长度 int leftlen = rootIn-InStart; //重建左子树 if(leftlen > 0) { root->_left = RebuildCode( PostStart, PostStart+leftlen-1, InStart,InStart+leftlen-1); } //重建右子树 if(InStart+leftlen < InEnd) { root->_right = RebuildCode( PostStart+leftlen, PostEnd-1, InStart+leftlen+1, InEnd); } return root;}BTreeNode* RebuildTree(int *PostOrder, int *InOrder, int len){ //首先判断边界条件 if(PostOrder == NULL || InOrder == NULL || len <= 0) { return NULL; } else { return RebuildCode(PostOrder, PostOrder+len-1, InOrder, InOrder+len-1); }}//后序遍历输出二叉树序列void PreOrder(BTreeNode *root){ if(root != NULL) { cout< _value<<" "; } if(root->_left != NULL) { PreOrder(root->_left); } if(root->_right != NULL) { PreOrder(root->_right); }}int main(){ int PostOrder[8] = {7,4,2,5,8,6,3,1}; int InOrder[8] = {4,7,2,1,5,3,8,6}; PreOrder(RebuildTree(PostOrder, InOrder, 8)); cout< "Java二叉树怎么根据前序和中序推出后续"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
节点
子树
位置
内容
据此
更多
条件
知识
结点
解法
边界
长度
输出
实用
学有所成
接下来
困境
实际
序列
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
瑰夏咖啡
湖北九亚互联网络科技有限公司
中关村互联网 科技集团
互联网科技金融
未来的互联网科技
壕鑫互联网络科技
沃里互联网科技
四川狮子座互联网科技
互联网 科技服务平台
科技与互联网的利与弊
中国的互联网科技企业的崛起
互联网科技项目计划书材料类
和信科技工业互联网
启辰互联网科技
互联网科技资金流入
2021世界互联网领先科技成果发布
南京一网一红互联网科技有限公司
兰石爱特工业互联网科技分公司
互联网科技品牌
优雇互联网科技有限公司
科技金融是不是互联网金融
科技与互联网
上海互联网科技有限公司
科技服务与互联网
睿民互联网科技
深圳互联网科技怎么样
来此购互联网科技有限公司
天津腾达互联网科技有限公司
威龙国际互联网科技公司
重庆科技产业互联网有哪些