通过中序和后续遍历数组重建二叉树
2012-06-30 13:16
169 查看
和前面的两种方式类似,根据后续遍历数组的最后一个元素可以在中序数组中找到根节点,然后左边的为左子树,右边的为右子树。递归可得二叉树。
void CreateTreeByMidAndPost(Node* node, char * mid, char * post, int size) { if(NULL ==node) { return; } if(1 == size ) { node->value = post[size -1]; return; } node->value = post[size -1]; int subSize = 0; while( post[size -1] != mid[subSize]) { ++subSize; } if(subSize > 0) { Node* child = new Node; node->Left = child; CreateTreeByPreAndMid(child, mid,post, subSize ); } if(subSize < size) { Node* child = new Node; node->Right = child; CreateTreeByPreAndMid(child, mid+subSize + 1,post + subSize, size - subSize - 1); } }
相关文章推荐
- 通过前序遍历和中序遍历重建二叉树以及输出后序遍历(Java实现)(二)
- 由前序遍历和中序遍历重建二叉树,再实现后续遍历
- 由前序遍历数组和中序遍历数组重建二叉树
- 通过前序和中序遍历数组重建树
- 通过前序遍历和中序遍历重建二叉树以及输出后序遍历(Java实现)
- 七:重建二叉树(依据先序遍历(或者后序遍历)和中序遍历重建二叉树)
- 【面试算法系列】已知二叉树的前序和中序遍历重建二叉树 - C语言实现
- 二叉树--已知前序遍历和中序遍历,输出后续遍历
- 假设已经有了前序遍历和中序遍历的结果,通过一个算法重建这棵树
- 剑指offer刷题之c++实现的根据二叉树的前序和中序遍历重建二叉树
- Construct Binary Tree from Inorder and Postorder Traversal ——通过中序、后序遍历得到二叉树
- 通过输入二叉树先序遍历和中序遍历,输出其后序遍历
- 二叉树前序、中序、后续遍历(递归实现)
- 【二叉树】由前序遍历和中序遍历重建二叉树
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- 根据前序遍历序列和中序遍历序列重建二叉树
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5
- 已知前序遍历和中序遍历,重建二叉树
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5
- 通过输入二叉树先序遍历和中序遍历,输出其后序遍历