资源简介
根据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动画制作——飞机起飞
相关资源
- 递归下降分析器分析普通的四则运算
- 二叉树基本操作源代码
- Abelian Higgs模型中的振幅,递归关系和
- Feynman图,带状图和Eynard-Orantin的拓扑
- LL(1)文法的递归下降分析程序例题
- 最近点对的暴力法和递归法实现图形
- PBDOM 遍历一个节点下的所有节点name及
- 数据结构图遍历的演示
- 易语言递归算法求阶乘源码
- 易语言递归算法算岁数源码
- 易语言无递归遍历源码
- 易语言无递归遍历文件源码
- 易语言API无递归遍历文件夹模块源码
- ls -R 递归显示
- DNF内存解密遍历器开源
- 递归下降法实现for循环的四元式和三
- 数据结构图形化演示,里面有动态查
- 二叉树遍历图形化演示
- 递归神经网络RNN与LSTM
- caxa 二次开发程序 刚刚完成
- 数据结构经典算法代码实现
- 递归解决迷宫问题
- 迷宫程序VC图形化界面
- 数据结构数组稀疏矩阵及广义表、递
- 布尔表达式的递归下降翻译程序设计
- usb 设备遍历
- 解密搜索器带自动获取基址
- 经典算法flash动画演示
- 编译原理课程设计代码 赋值语句的递
- 编程机器人2.0.swf
评论
共有 条评论