b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

数据结构实验: 二进制排序树

电脑杂谈  发布时间:2020-04-28 03:27:02  来源:网络整理

数据结构二叉排序树_排序二叉树的删除_树与二叉树的转换的实现

****************************** /

//定义数据结构

struct NODE

{

int数据;

节点*左;

节点*对;

};

/ *************************

*定义是否找到徽标.

我认为递归用法不应包含cout之类的输出语句,

因为递归调用将导致递归输出,

因此定义一个标志

在此处使用全局变量不是很好

但是为了简单起见,仅此而已! ! !

****************************** /

int标志= 0;

//整个程序被封装到一个类中

类树

{

公开

:

树();

//根据整数数组和该数组的元素构造一棵树

void buildTree(int data [],int n);

//三种遍历方法.

void preorder();

void inorder();

void postorder();

//查找功能

无效搜索(int temp);

私人:

//用于遍历树的辅助功能

void recursive_inorder(节点*根);

void recursive_preorder(NODE * root);

void recursive_postorder(节点*根);

void recursive_search(NODE * root,int temp);

/ ********************************************

这称为插入函数,在构造树时需要

要构建二进制排序树,我在这里使用递归.

请注意我在这里使用双指针,因为我想在根目录中插入值!

但是,我们知道要更改root的值,必须使用指针(地址).

否则,作为形式参数操作,保留该函数不会更改形式参数的值.

********************************************* /

无效插入(节点**树数据结构二叉排序树,整数键);

节点*根; //树根

};

//在构造函数中将root设置为NULL

树::树()

{

排序二叉树的删除_树与二叉树的转换的实现_数据结构二叉排序树

root = NULL;

}

无效树::插入(节点**树,整数键)

{

如果(* tree == NULL)

{

/ ***************************

请注意此处的用法,我们必须使用(*树),

因为定义了双指针,

我们要操作的是地址中的内容!

**************************** /

*树=新节点();

(*树)-> data =键;

(*树)->左= NULL;

(*树)->右= NULL;

返回;

}

如果(键<(*树)->数据)

{

/ *****************

递归用法,如果您不理解,

所以我们先来看一下递归!

*********************** /

插入(&(*树)->左键);

}

其他

{

/ *****************

递归用法,如果您不理解,

所以我们先来看一下递归!

*********************** /

插入(&(*树)->右键);

}

}

/ ********************

这是使用递归函数insert()构建树!

根据比较数组的值的大小,动态插入它.

************************* /

void Tree :: buildTree(int数据[],int n)

{

cout <<“开始构建排序的二叉树...” << endl << endl;

for(int i = 0; i

{

插入(&根,数据[i]);

}

cout <<“排序的二叉树的构建完成了……” << endl << endl;

}

// [顺序遍历]层次二叉树

void Tree ::预订()

{

树与二叉树的转换的实现_数据结构二叉排序树_排序二叉树的删除

cout <<“顺序遍历...” << endl;

recursive_preorder(root);

cout << endl;

}

// [第一次遍历]分层二叉树的辅助方法.

空树:: recursive_preorder(NODE * root)

{

节点* p =根; //以根节点进行操作.

//打印当前访问的节点

如果(p!= NULL)

{

cout << p->数据<<“->”; //访问()

}

/ *******************

递归遍历左右子树,

在左右子树访问NULL的情况下

*********************** /

如果(p->向左!= NULL)

{

recursive_preorder(p->向左);

}

如果(p->对!= NULL)

{

recursive_preorder(p->向右);

}

}

// [序列遍历]层次二叉树

无效树:: inorder()

{

cout <<“有序遍历...” << endl;

recursive_inorder(根);

cout << endl;

}

//层次二叉树的[中间遍历]辅助功能

空树:: recursive_inorder(节点*根)

{

节点* p =根; //以根节点进行操作.

/ *******************

首先转到最左侧的子树,

直到访问NULL,

那是左子树的结尾

返回

开始访问该节点.

*********************** /

如果(p == NULL)

{

返回;

}

/ *******************

首先遍历最左边的节点,

数据结构二叉排序树_排序二叉树的删除_树与二叉树的转换的实现

然后,访问该节点,

如果节点不为NULL,

只需[递归遍历]左,中和右节点.

*********************** /

如果(p->向左!= NULL)

{

recursive_inorder(p->向左);

}

cout << p->数据<<“->”; //访问()

如果(p->对!= NULL)

{

recursive_inorder(p->向右);

}

}

// [后遍历]分层二叉树

void Tree ::后继()

{

cout <<“后序遍历...” << endl;

recursive_postorder(根);

cout << endl;

}

//分层二叉树的[后遍历]辅助功能.

无效树:: recursive_postorder(节点*根)

{

节点* p =根; //以根节点进行操作.

/ *******************

首先转到最左侧的子树,

直到访问NULL,

那是左子树的结尾

返回

开始访问该节点.

*********************** /

如果(p == NULL)

{

返回;

}

/ *******************

首先遍历最左边的节点,

然后,访问该节点数据结构二叉排序树

如果节点不为NULL,

只需[递归遍历]左,中和右节点.

*********************** /

如果(p->向左!= NULL)

{

recursive_postorder(p->左);

}

如果(p->对!= NULL)

{

recursive_postorder(p->向右);

}

数据结构二叉排序树_树与二叉树的转换的实现_排序二叉树的删除

cout << p->数据<<“->”; //访问()

}

无效树:: :: recursive_search(节点*根,整数温度)

{

/ *******************

使用顺序遍历进行搜索!

*********************** /

节点* p =根; //以根节点进行操作.

//转到当前节点,如果它等于要搜索的值,则将其标记.

如果(p!= NULL)

{

如果(p->数据==温度)

flag = 1;

}

如果(p->向左!= NULL)

{

recursive_search(p->左侧,临时);

}

如果(p->对!= NULL)

{

recursive_search(p->正确,临时);

}

}

空树::搜索(临时)

{

//使用recursive_search进行递归搜索.

recursive_search(根目录,临时目录);

}

void main()

{

int数据[10] = {8,3,6,1,5,2,9,7,4,0}; //定义一个数组.

树;

tree.buildTree(data,10); //构建树

/ ****************************************

通过三种方式遍历我们构造的分类二叉树!

************************************ /

tree.inorder();

tree.preorder();

tree.postorder();

int temp;

cout <<“请输入要查找的值: ” << endl;

cin >> temp;

tree.search(temp); //开始搜索

开关(标志)

{

情况1:

cout <<“得到它...” << endl << endl;

休息;

情况0:

cout <<“无法获取...” << endl << endl;

休息;

}

}

================================================ ======================================


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-191388-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 张志明
        张志明

        在输入键盘按小地球图标

      每日福利
      热点图片
      拼命载入中...