📄 bintree3p.cpp
字号:
/**********************************************************
该二叉树中用到的标准模板类如下
要注意添加头文件
***********************************************************/
#include <iostream> //要改动的代码
#include "BinTree3P.h"
/********************************************************
使用说明:
1)void reportError(char info[],int length)函数用于报告错误
在不同平台下请自己编写
*********************************************************/
void reportError(char info[],int length) //错误提示函数
{
for(int i=0;i < length; i++)
cerr<<info[i];
cerr<<endl;
}
/****************************************************************
用字符串初始化数 按先序顺序输入 "空"用
****************************************************************/
void CreatTree(CBinTree3P<char> & tree, char * data , int len)
{
stack<CBinTreNode<char> *> skPos; //保存应插入的地址
stack<bool> skIsRig; //判断插入位置是否在右侧
tree.CreatRoot(data[0]);
CBinTreNode<char> * pPos = tree.m_pRoot;
skPos.push(pPos);
skIsRig.push(false);
for(int i = 1;i<len && !skPos.empty();i++){
if(data[i] == '#'){
if(skIsRig.top() == false){
skIsRig.pop();
skIsRig.push(true);
continue;
}
else{
skPos.pop();
skIsRig.pop();
continue;
}
}
else{
if(skIsRig.top() == false){
pPos = tree.InsertLefC(skPos.top(),data[i]);
skIsRig.pop();
skIsRig.push(true);
skPos.push(pPos);
skIsRig.push(false);
continue;
}
else{
pPos = tree.InsertRigC(skPos.top(),data[i]);
skIsRig.pop();
skPos.pop();
skPos.push(pPos);
skIsRig.push(false);
continue;
}
}
}
if(!skPos.empty() || i< len ) reportError("!!!创建二叉树指令字符串错误",30);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -