重建二叉树
来源:互联网 发布:key软件怎么打开 编辑:程序博客网 时间:2024/06/06 02:32
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序序列和中序序列中都不含重复的数字。
例如输入前序{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}
重建二叉树如图所示(省略)。二叉树节点的定义如下:
struct BinaryTreeNode
{
int mValue;
BinaryTreeNode* mLeftChild;
BinaryTreeNode* mRightChild;
};
#include <iostream>using namespace std;struct BinaryTreeNode{char mValue;BinaryTreeNode * mLeftChild;BinaryTreeNode * mRightChild;};//我写的版本BinaryTreeNode* Construct0(char * preOrder , char * inOrder, int length){if (length <= 0)return NULL;BinaryTreeNode* root = new BinaryTreeNode();root->mValue = preOrder[0];root->mLeftChild = NULL;root->mRightChild = NULL;int i = 0;for (i; i < length && preOrder[0] != inOrder[i]; ++i);int leftLength = i;int rightLength = length - leftLength - 1;root->mLeftChild = Construct0(preOrder + 1, inOrder, leftLength);root->mRightChild = Construct0(preOrder + 1 + leftLength, inOrder + 1 + leftLength, rightLength);return root;}void PostOrder(BinaryTreeNode * root){if (root){PostOrder(root->mLeftChild);PostOrder(root->mRightChild);cout << root->mValue << " ";}}int main(){BinaryTreeNode * root = NULL;root = Construct0("12473568","47215386", 8);PostOrder(root);return 0;
0 0
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- linux问题处理收集
- Mac安装tensorflow
- 实现主备路由自动切换 – keepalived【二】
- 烧入时遇到的相关问题集合
- qq,微信,微博,简单的分享只分享存文本
- 重建二叉树
- 设置全屏dialog
- matlab 的循环
- linux 中 ll 命令 查询结果按时间升序或降序排序
- XAMPP总是启动本地mysql的解决办法
- HTTP原理和http1.1 http1.0的区别
- Android Broadcast详解(更新中)
- (35):注解优先于命名模式
- hdu2050