问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++数据结构题1:建立一棵二叉链表树,分别输出此先根,中根和后根遍历序列

发布网友 发布时间:2022-06-04 04:51

我来回答

4个回答

热心网友 时间:2023-10-26 18:40

#include <iostream>
using namespace std;

class bst
{
struct Node
{
int data;
Node *L;
Node *R;
Node(const int &d):data(d),L(NULL),R(NULL)
{
}
};

Node *root;
int len;
void clear(Node *&tree)
{
if (tree == NULL)
{
return ;
}

clear(tree->L);
clear(tree->R);
delete tree;
tree = NULL;
--len;
}

void travel(Node *tree)
{
if (tree == NULL)
{
return ;
}

travel(tree->L);
cout << tree->data << ' ';
travel(tree->R);
}

int height(Node *tree)
{
if (tree == NULL)
{
return 0;
}

int lh = height(tree->L);
int rh = height(tree->R);
return lh > rh ? lh+1 : rh+1;
}

void insert(Node *&tree, Node *p)
{
if (tree == NULL)
{
tree = p;
}
else if (p->data < tree->data)
{
insert(tree->L, p);
}
else
{
insert(tree->R, p);
}

}

Node* &find(Node* &tree, const int &d)
{
if (tree == NULL)
{
return tree;
}

if (tree->data == d)
{
return tree;
}

if (d < tree->data)
{
find(tree->L, d);
}

return find(tree->R, d);
}

void combine(Node *lc, Node *&rc)
{
if (lc == NULL)
{
return ;
}

if (rc == NULL)
{
rc = lc;
}
else
{
combine(lc, rc->L);
}

}

public:
bst():len(0),root(NULL)
{

}

~bst()
{
clear(root);
}

void clear()
{
clear(root);
}

void travel()
{
travel(root);
cout << endl;
}

bool empty()
{
return root==NULL;
}

int height()
{
return height(root);
}

void insert(const int &d)
{
insert(root, new Node(d));
++len;
}

bool find(const int &d)
{
return find(root, d) != NULL;
}

bool erase(const int &d)
{
Node *&pt = find(root, d);
if (pt == NULL)
{
return false;
}

combine(pt->L, pt->R);
Node *p = pt;
pt = pt->R;
delete p;
--len;

return true;

}
};

int main(int argc, char *argv[])
{
bst t;
t.insert(9);
t.insert(6);
t.insert(3);
t.insert(5);
t.insert(8);
t.insert(15);
t.insert(24);
t.travel();
cout << t.find(16) << endl;
return 0;
}

热心网友 时间:2023-10-26 18:41

回去找找以前的代码,有的话给你哦

热心网友 时间:2023-10-26 18:41

子阳!!下课后来办公室一趟

热心网友 时间:2023-10-26 18:42

开发人员伤不起!对不起,不懂!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...flash学得好、将来会有什么用、求哥哥、姐姐们、帮帮忙 我即将初中毕业,想要读技校,但又不知选那科好`哥哥姐姐们帮个忙吧! 成绩不好,高中毕业想学电脑,哪位哥哥姐姐知道帮忙推荐下学校_百度知 ... 大学计算机3级 怎样学习啊 难吗 哥哥姐姐 帮帮忙吧 ...就业怎样?我报了这个专业,请各位哥哥姐姐帮帮忙 请IT业工作的哥哥姐姐帮忙出出主意~~ ...师傅让他沿着水缸边行走练功。有谁知道这个电影叫什么? 小伙穿越拜"小龙女"为师,与小龙女合练武功是什么电影 ...电影开头是一个赤膊的男主角在练功,然后再和队友们去做任务,结果一... ...一秒竟然穿越了醒来第一句话就是疼死宝宝了是什么电视剧? 若某棵二叉树的后根遍历序列为DBEFCA,中根遍历序列为DBAECF,请画出这棵二叉树 二叉树中的一个叶子是其中中根遍历序列中的第2个结点,则该叶子是后序遍历中的第几个结点? 中序遍历得到的序列是 ...相片是psd格式的,如何转换成jpg格式的,刚刚把格式转了,就用不到... 散户为什么总是“赚小亏大”,庄家就是靠这个 散户为什么总是亏钱 为什么庄家老赢钱,散户老输钱,就因为这么高价的 在快手里怎么把发的作品调慢速度? 求珍珠奶茶的做法大全 碧波仙子电视剧中红鱼儿是谁主演 碧波仙子 李安最后娶了谁 碧波仙子中的菩萨是谁演的 碧波仙子 历史上的李安是什么人? 就是《碧波仙子》里的李安! 怎么哪里都搜不到那个人? 碧波仙子秀姑是谁 碧波仙子是谁演的 win7旗舰版开机密码忘了怎么办,按了f8,进入了带命令模式,结果还是要密码? 琼瑶六个梦之望夫崖中的小夏磊是谁演的 琼瑶电视剧 琼瑶电视剧望夫崖, 已知遍历一二叉树后的中根遍历序列CDBAFGEIHJ和 后缀遍历序列DCBGFIJHEA,试画出二叉树 已知一棵二叉树的中根遍历序列CBDEAGIHJF,后根遍历序列是CEDBIJHGFA,请先画出该二叉树, 已知一棵二叉树的中根遍历序列为CBEDFAGH,后根遍历序列为CEFDBHGA,画出改二叉数 现有某二叉树,按先根遍历的序列为ABCDEFGHI,按中根遍历的序列为BCAEDGFHFI 已知一课二叉树的中根遍历序列为cbedfagh,后根遍历序列为cefdbhg 描写丝绸之路的句子 丝绸之路可以用什么成语来形容 形容丝绸之路的成语 丝绸之路作为中外友好的纽带,用简短的话语描述出它的故事? 赞美丝绸之路的成语 描写丝绸之路的诗句 用一句话描写 丝绸之路的意义 丝绸之路的开通中的成语典故有哪些 丝绸之路上的古诗,涉及一些著名景点的,要有整篇翻译!!!!!!!!!速度速度!!!!!!!!!!! 丝绸之路课文主要内容 本文主要写什么啊?说下谢谢了. 最好短一点本文主要写的. 五年级课文《丝绸之路》这篇课文,先写了什么,又写了什么,再写了什么,最后写了什么?? 用什么成语形容中国的丝绸之路 微信订阅号如何升级服务号 《重生之神级明星》txt下载在线阅读全文,求百度网盘云资源 《重生之神级巨星》txt下载在线阅读全文,求百度网盘云资源