博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oral_quiz->#根据先根、中根,建树#
阅读量:7201 次
发布时间:2019-06-29

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

hot3.png

#include "stdafx.h"#include "Utilities/BinaryTree.h"#include 
BinaryTreeNode* ConstructCore(int* startPreorder, int* endPreorder, int* startInorder, int* endInorder);BinaryTreeNode* Construct(int* preorder, int* inorder, int length) { if(preorder == NULL || inorder == NULL || length <= 0) return NULL; return ConstructCore(preorder, preorder+length-1, inorder, inorder+length-1);}BinaryTreeNode* ConstructCore(int* startPreorder, int* endPreorder, int* startInorder, int* endInorder) { int rootValue = *startPreorder; BinaryTreeNode* root = new BinaryTreeNode(); root->m_nValue = rootValue; root->m_pLeft = root->m_pRight = NULL; //left only one node if((startPreorder == endPreorder) && (startInorder == endInorder)) { if(*startPreorder == *startInorder) return root; else throw std::exception(); } //find root node in inorder int* rootInorder = startInorder; while(rootInorder <= endInorder && *rootInorder != rootValue) ++rootInorder; if(rootInorder == endInorder && *rootInorder != rootValue) { throw std::exception(); } int leftLength = rootInorder - startInorder; int* leftEndPreorder = startPreorder + leftLength; //left subtree if(leftLength > 0) { root->m_pLeft = ConstructCore(startPreorder+1, leftEndPreorder, startInorder, rootInorder-1); } //right subtree if(0 < endInorder - rootInorder) { root->m_pRight = ConstructCore(leftEndPreorder+1, endPreorder, rootInorder+1, endInorder); } return root;}//=====================================Test====================================void Test(const char* testName, int* preorder, int* inorder, int length) { if(testName != NULL) printf("%s begins:\n", testName); printf("The preorder sequence is: "); for(int i=0; i

转载于:https://my.oschina.net/ITHaozi/blog/278514

你可能感兴趣的文章
[Spark][python]以DataFrame方式打开Json文件的例子
查看>>
云平台服务器应急检查步骤
查看>>
JAVA使用Marvin在图片中搜索图片
查看>>
结合 category 工作原理分析 OC2.0 中的 runtime
查看>>
SVM公式推导笔记
查看>>
PyQt环境配置
查看>>
Django框架之模板继承和静态文件配置
查看>>
使用引用
查看>>
参照企业微信审批业务,在Winform开发框架中工作流模块的实现业务审批
查看>>
freemark标签从后台接过来数据Boolean在前台还是Boolean输出(四)
查看>>
网络分析法(Analytic Network Process,ANP)
查看>>
InstallShield12的安装破解方法
查看>>
MyCat中间件:读写分离(转)
查看>>
ROS nodelet的使用
查看>>
ABP框架系列之五十三:(Web-API-Controllers-Web-API-控制器)
查看>>
springmvc+shiro+freemarker实现的安全及权限管理
查看>>
Python 简介
查看>>
实现跨浏览器html5表单验证
查看>>
[k8s]如何处理dockerfile无expose情况下在k8s里暴漏访问
查看>>
5分钟编写运行一个RChain合约
查看>>