沈阳网站建设包括,网站开发和系统开发的区别,哪个网站建设商招代理,网站 外包方案【数据结构1-2】二叉树 - 题单 - 洛谷 【数据结构】day2-树_J娇娇_的博客-CSDN博客
上学时的作业 P1827 [USACO3.4] 美国血统 American Heritage
二叉树特点写法#xff08;非二叉树#xff09;
截取字符串写法
#includestring
#includecstring
#include…【数据结构1-2】二叉树 - 题单 - 洛谷 【数据结构】day2-树_J娇娇_的博客-CSDN博客
上学时的作业 P1827 [USACO3.4] 美国血统 American Heritage
二叉树特点写法非二叉树
截取字符串写法
#includestring
#includecstring
#includeiostream
#includecstdio
using namespace std;
string pre,in;
void work(string pre,string inor)
{if(pre.empty())return;char rootpre[0];int kinor.find(root);pre.erase(pre.begin());string leftprepre.substr(0,k);//从0开始切割k个 0 - k-1string rightprepre.substr(k);//k到最后 string leftinorinor.substr(0,k);string rightinorinor.substr(k1);work(leftpre,leftinor);work(rightpre,rightinor);printf(%c,root);//因为要输出后序序列所以是左右根
}
int main()
{cininpre;work(pre,in);putchar(\n);return 0;
}
位置标记写法
//一定要看清题目中为先中序再是前序
#include bits/stdc.h //万能头文件
using namespace std;
string a,b; //把中前遍历当做字符串输入
void houxu(int x,int y,int p,int q) { //x~y为前序遍历 p~q为中序遍历if(xy||pq) return ;//规定边界条件else {int ib.find(a[x]); //利用根左右的特性来在中序队列中查找houxu(x1,xi-p,p,i-1); //递归左子树houxu(xi-p1,y,i1,q); //递归右子树couta[x];
}
}
int main() {cinba;//反一下输入int la.length()-1;//因为是0开始所以要减一houxu(0,l,0,l);//递归return 0;
} 二叉树写法
#includebits/stdc.h
using namespace std;
typedef struct tree
{char ch;struct tree *Lchild;struct tree *Rchild;
}Nodetree,*Betree;
void CreateTree(Betree *r,char Pre[],char In[],int prel,int prer,int il,int ir)//中序数组后序数组递归创建二叉链表
{if(ilir)*rNULL;else{*rnew Nodetree;(*r)-chPre[prel];int midil;while(In[mid]!Pre[prel])//定位mid{mid;}CreateTree(((*r)-Lchild),Pre,In,prel1,prelmid-il,il,mid-1);CreateTree(((*r)-Rchild),Pre,In,prelmid-il1,prer,mid1,ir);}
}
void print(Betree r)
{if(rNULL)return;else{print(r-Lchild);print(r-Rchild);coutr-ch;}
}
int main()
{char Pre[10010],In[10010];cinInPre;Betree r;rnew Nodetree;CreateTree(r,Pre,In,0,strlen(Pre)-1,0,strlen(In)-1);print(r);
}
前序中序-后序 CreateTree(((*r)-Lchild),Pre,In,prel1,prelmid-il,il,mid-1);CreateTree(((*r)-Rchild),Pre,In,prelmid-il1,prer,mid1,ir);
中序后序-前序
CreateTree(((*r)-Lchild),Last,In,LastL,LastLmid-il-1,il,mid-1);
CreateTree(((*r)-Rchild),Last,In,LastLmid-il,LastR-1,mid1,ir);P1305 新二叉树
#includeiostream
#includestring
#includecstring//不加会CE
using namespace std;
int n;
string s;
int main()
{cinn;cins;for(int i2;in;i)//由于第一个为原串所以单独输入{string ss;cinss;int xs.find(ss[0]);//找到这个子树的根节点在原串中的位置s.erase(x,1);//清除根节点s.insert(x,ss);//加入子树}for(int i0;is.size();i)if(s[i]!*) couts[i];//不输出空节点else continue;
}
#includeiostream
using namespace std;
struct programmer
{char lc;char rc;
}lt[130];//数组这个十分重要一会儿输入字符的时候还要用这个串起来
//其实真正起作用的只有lt[73]~lt[122],说这个是为了防止一些人不多想方便理解的
char h,h1;//储存一会儿要输入的节点多定义一个h1是为了一会儿将根节点保留下来先代入函数
void sm(char x)
{if(x*) return;coutx;sm(lt[x].lc);sm(lt[x].rc);
}
int main()
{int n;cinn;cinh1;//根 cinlt[h1].lc;//左 cinlt[h1].rc;//右 for(int i2;in;i){cinh;cinlt[h].lc;cinlt[h].rc;}sm(h1);return 0;
}