已知中序和前序序列建二叉树
2012-04-21 18:23
225 查看
#include<iostream> using namespace std; struct BinaryTreeNode { int m_nValue; BinaryTreeNode * m_pLeft; BinaryTreeNode * m_pRight; //int tag; }; int foreOrder[8] = {1, 2, 4, 7, 3, 5, 6, 8}; int inOrder[8] = {4, 7, 2, 1, 5, 3, 8, 6}; int length = 8; BinaryTreeNode * buildTree( int * i, int first, int last) { if((*i) >= length) return NULL; int j; for(j = 0; j < length; j++) if(inOrder[j] == foreOrder[*i]) break; BinaryTreeNode * root = (BinaryTreeNode *)malloc(sizeof(BinaryTreeNode)); root->m_nValue = foreOrder[*i]; root->m_pLeft = NULL; root->m_pRight = NULL; *i += 1; if(j > first) root->m_pLeft = buildTree(i, first, j); if(last > j+1) root->m_pRight = buildTree(i, j+1, last); return root; } //中序遍历 void inOrderOutput(BinaryTreeNode * root) { if(root == NULL) return; inOrderOutput(root->m_pLeft); printf("%d ", root->m_nValue); inOrderOutput(root->m_pRight); } int main() { int i = 0; BinaryTreeNode * root = buildTree(&i, 0, length); inOrderOutput(root); return 0; }
相关文章推荐
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知一颗二叉树S的前序遍历和中序遍历 序列,请编程输出二叉树S的后续遍历序列.
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 数据结构与算法学习之二叉树的遍历:已知先序、中序、后序序列三者中的两种求另外一种遍历的算法
- 已知二叉树的先序遍历和中序遍历序列求后序遍历序列
- 学习笔记——已知二叉树的先序中序求后序、中序后序求先序的遍历序列
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序序列和前序序列(或后序)求解树
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- 已知二叉树的中序序列和前序序列(或后序)求解树
- 【郝斌数据结构自学笔记】70-74_已知两种遍历序列求原始二叉树概述_已知先序和中序求后序_已知中序和后序求先序_树的应用简单介绍
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序序列为DBGEAFC,后序序列为DGEBFCA,给出对应的二叉树
- 已知二叉树的中序序列和前序序列(或后序)求解树
- 已知一颗二叉树S的前序遍历和中序遍历序列,请编程输出二叉树S的后续遍历序列。
- 二叉树已知先序序列(后序序列)、中序序列求解后序序列(先序序列)
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- 已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法