23.10.16树操作

树的操作:

1、树的构建

Node build(Node p, int &k, string s){
if(s[k] == '#'){
k++;
return NULL;
}
p = new node();
p -> ch = s[k++];
p -> lc = build(p->lc,k,s);
p -> rc = build(p->rc,k,s);
return p;
}

用字符串s来构建,k作为索引

2、树的遍历

先序:

void show(Node p){
if(p == NULL) return;

cout << p -> ch;
show(p -> lc);
show(p -> rc);
}

中序:

void show(Node p){
if(p == NULL) return;

show(p -> lc);

cout << p -> ch;
show(p -> rc);
}

后序:

void show(Node p){
if(p == NULL) return;

show(p -> lc);

show(p -> rc);

cout << p -> ch;
}

三个的区别:只是改变语句顺序

3、交换二叉树每个结点的左孩子和右孩子

void change(Node p){
Node t;
if(p == NULL) return;
t = p -> lc;
p -> lc = p -> rc;
p -> rc = t;
change(p -> lc);
change(p -> rc);
}

 

posted @   a_true  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示