根据前序遍历和中序遍历构建二叉树
来源:互联网 发布:企业文件管理系统源码 编辑:程序博客网 时间:2024/05/18 01:48
问: 一颗二叉树前序遍历为{1,2,4,7,3,5,6,8},中序遍历为 {4,7,2,1,5,3,8,6},构建这只二叉树。
思路:根节点为1,根据中序遍历左边为4,7,2,右边为5,3,8,6。可以写一个递归函数来搞。
传入参数分别为:前序开始,前序结束,后序开始,后序结束
struct BinaryTreeNode { int m_value; BinaryTreeNode* m_pLeftNode; BinaryTreeNode* m_pRightNode;};BinaryTreeNode* ConstructCore(int* startPrerder, int* endPreorder,int* startInorder,int* endInorder){ //构建根节点 int rootValue = startPrerder[0]; BinaryTreeNode *rootNode = new BinaryTreeNode(); rootNode->m_value = rootValue; rootNode->m_pLeftNode = NULL; rootNode->m_pRightNode = NULL; if(startPrerder == endPreorder) { if(startInorder == endInorder && *startPrerder == *startInorder) { return rootNode; } else { throw std::exception("invalid paragram"); } } int* rootInorder = startInorder; //找到根节点在中序的位置 while(*rootInorder != rootValue && rootInorder <= endInorder) { rootInorder++; } if(rootInorder == endInorder && *rootInorder != rootValue) { throw std::exception("invalid paragram"); } //求出左节点的个数 int leftLength = rootInorder - startInorder; //求出新的前序遍历末节点位置,递归调用 int* leftPreorderEnd = startPrerder + leftLength; if(leftLength > 0) { rootNode->m_pLeftNode = ConstructCore(startPrerder + 1,leftPreorderEnd, startInorder,rootInorder -1); if(leftLength < endPreorder - startPrerder) { rootNode->m_pRightNode = ConstructCore(leftPreorderEnd + 1,endPreorder,rootInorder+1,endInorder); } return rootNode;}
0 0
- 根据中序和前序遍历构建二叉树
- 根据前序遍历,中序遍历构建二叉树
- 根据前序遍历和中序遍历构建二叉树以及根据中序遍历后序遍历构建二叉树
- 根据前序遍历和中序遍历构建二叉树
- 根据中序遍历和前序遍历构建二叉树
- 根据前序遍历、中序遍历构建二叉树,并后序遍历输出。
- java实现根据前序遍历构建二叉树(前序遍历、中序遍历、后序遍历)
- 根据二叉树的前序遍历和中序遍历构建二叉树的c语言完整代码
- 根据树的前序遍历与中序遍历构建二叉树
- 【二叉树】根据二叉树的中序遍历和前序遍历,还原二叉树
- 根据前序和中序遍历构造二叉树
- 根据前序和中序遍历构造二叉树
- 根据中序和前序遍历重建二叉树
- 根据前序和中序遍历重建二叉树
- 根据前序遍历、中序遍历重建二叉树
- 根据前序遍历中序遍历求二叉树
- 根据前序遍历和后续遍历建立二叉树
- 二叉树 根据前序遍历和中序遍历 或者 后序遍历和中序遍历建树
- 论 f.getModifiers() & Modifier.FINAL &Modifier.STATIC 如何成立
- Tesseract-OCR引擎试用 rebuild on vs2012【testing】
- iOS开发中的测试框架
- PIC常见错误-不定期更新
- 反射例子
- 根据前序遍历和中序遍历构建二叉树
- Android 图片闪烁的效果
- Helix server 使用说明
- 在vc6引入自己在VS编译生成的lib时出现 invalid or corrupt import object: unknown version的问题
- 南邮 OJ 1222 序关系计数问题
- modprobe 及 配置文件 /etc/modprobe.conf
- 性能优化之布局优化
- Oracle会话及连接数优化
- iPhone的恢复模式进入与退出