资源简介
根据extended preOrder sequence建立二叉树
三种遍历的递归算法
三种遍历的非递归算法
层顺遍历的非递归算法
树深度 宽度 叶子数 节点数 度为1节点数的算法
树的克隆
根据两种顺序建立二叉树
代码片段和文件信息
#include
#include
using namespace std;
typedef struct BinNode
{
char data;
struct BinNode *lch *rch;
} BinNode;
//--------------------------------------------------------------------------
BinNode* createTree_InPost(const string& inOrder const string& PostOrder);
BinNode* createTree_PreIn(const string preOrder const string& inOrder);
void display(BinNode* t);
void destroy(BinNode *t);
//--------------------------------------------------------------------------
int main()
{
BinNode *binNode;
string preOrder inOrder postOrder;
//----------------------------------------------
cout << “Enter the inOrder and the postOrder to create the tree“ << endl;
cin >> inOrder >> postOrder;
binNode = createTree_InPost(inOrder postOrder);
if(!binNode)
{
cout << “creating fails“ << endl;
exit(-1);
}
display(binNode);
destroy(binNode);
cout << endl << endl;
//----------------------------------------------
cout << “Enter the inOrder and the postOrder to create the tree“ << endl;
cin >> preOrder >> inOrder;
binNode = createTree_PreIn(preOrder inOrder);
if(!binNode)
{
cout << “creating fails“ << endl;
exit(-1);
}
display(binNode);
destroy(binNode);
//----------------------------------------------
return 0;
}
BinNode* createTree_InPost(const string& inOrder const string& PostOrder)
{
if (inOrder.empty() || PostOrder.empty())
return NULL;
char rootC = *(PostOrder.end() - 1); //find the root node
string::size_type rootIndex = inOrder.find_first_of(rootC);
string leftMidIn = inOrder.substr(0 rootIndex);
string rightMidIn = inOrder.substr(rootIndex+1);
string leftLastIn;
string rightLastIn;
string::const_iterator curIter = PostOrder.begin();
string::const_iterator endIter = PostOrder.end();
for (; curIter!=endIter; ++curIter)
{
char c = *curIter;
if (leftMidIn.find_first_of(c) != string::npos)
{
leftLastIn.push_back(c);
}
else if (rightMidIn.find_first_of(c) != string::npos)
{
rightLastIn.push_back(c);
}
}
BinNode* tree = new BinNode;
tree->data = rootC;
tree->lch = createTree_InPost(leftMidIn leftLastIn);
tree->rch = createTree_InPost(rightMidIn rightLastIn);
return tree;
}
BinNode* createTree_PreIn(const string preOrder const string& inOrder)
{
if (preOrder.empty() || inOrder.empty())
return NULL;
char rootC = *preOrder.begin();
string::size_type rootIndex = inOrder.find_first_of(rootC);
string leftInOrder = inOrder.substr(0 rootIndex);
string rightInOrder = inOrder.substr(rootIndex+1);
string leftPreOrder rightPreOrder;
string::const_iterator curIter = preOrder.begin();
string::const_iterator endIter = preOrder.end();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4015 2012-10-16 11:28 createBinTree_twoOrder.cpp
文件 10612 2012-10-30 15:40 createBiTree_preorder.cpp
----------- --------- ---------- ----- ----
14627 2
- 上一篇:robot_results.groovy
- 下一篇:flash动画制作——飞机起飞
相关资源
- 死锁检测算法
- 数据结构课程设计 线索二叉树
- 图的深度优先遍历算法源码
- 二叉树深度+建树+查找+遍历二叉树
- N皇后问题答案求解QT实现带源码
- Delphi遍历二叉树源代码..rar
- 线索二叉树的建立、删除、插入、恢
- 二叉树三种遍历的非递归算法背诵版
- 在数据库中遍历查找某个字符串
- 二叉树的构造与遍历
- opengl画球,递归细分
- 分层建立多叉树及分层遍历输出
- 赋值语句的递归下降翻译程序设计
- 层次遍历多元树在文件tree.cpp中3个空
- 二叉树与树、森林的转换数据结构课
- 四川大学计算机学院 C-语言编译器 编
- 判别两个广义表是否相等的递归算法
- 图的深度优先搜索遍历c代码实现
- 二叉树树形输出
- 二叉树与哈夫曼压缩编码实验
- scratch画二叉树
- 《数据结构》实验报告 涉及客房管理
- 遍历窗体中的所有控件
- 遍历多级树状json获得父子节点值
- 内存遍历工具源码
- 编译原理消除左递归源码
- n皇后,哈密尔顿回路,0/1背包,图的
- 关于二叉树结构的一个应用小
- TSP回溯法实现从武汉出发,进行34个省
- 编写函数f,功能是用递归的方法求斐
评论
共有 条评论