当前位置: 首页 > news >正文

网上做宣传的网站和县网站定制

网上做宣传的网站,和县网站定制,wordpress插件,网站搜索引擎优化报告导言 前面以及有了堆的基础,现在来学习二叉树。二叉树的学习和前面的数据结构很不一样,前面我们主要学习用数据结构储存数据,以及实际手搓数据结构的增删查改;而学习二叉树主要是为我们以后学搜索二叉树以及后面的AVL树等数据结构…

导言

前面以及有了堆的基础,现在来学习二叉树。二叉树的学习和前面的数据结构很不一样,前面我们主要学习用数据结构储存数据,以及实际手搓数据结构的增删查改;而学习二叉树主要是为我们以后学搜索二叉树以及后面的AVL树等数据结构做准备,我们主要学习遍历二叉树,学一下二叉树的结构。

二叉树的遍历

二叉树由结点组成,一个父节点最多有两个子节点

相信大家基本上都在学校学习过二叉树的遍历,但是其中的具体细节不一定清楚明白。

二叉树的遍历根据访问根节点的顺序分为三种

前序遍历:先访问根节点,然后遍历左子树,最后遍历右子树。

中序遍历:先遍历左子树,然后访问根节点,最后遍历右子树。

后序遍历:先访遍历左子树,然后遍历右子树,最后访问根节点。

前序遍历

接下来我们来手动测试一下前序遍历

前置说明

这里我们来定义一下二叉树的结构

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>typedef struct BinaryTreeNode
{int data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}BTNode;

在测试的我们可以自己手搓一个二叉树测试用例出来

BTNode* BuyNode(int x)
{BTNode* node= (BTNode*)malloc(sizeof(BTNode));if (node == NULL){perror("malloc fail");return NULL;}node->data = x;node->left = NULL;node->right = NULL;
}BTNode* CreatBinaryTree()
{BTNode* b1 = BuyNode(1);BTNode* b2 = BuyNode(2);BTNode* b3 = BuyNode(3);BTNode* b4 = BuyNode(4);BTNode* b5 = BuyNode(5);BTNode* b6 = BuyNode(6);b1->left = b2;b1->right = b4;b2->left = b3;b4->left = b5;b4->right = b6;return b1;
}

这样我们就得到了一个二叉树

接下来用代码实现前序遍历,用递归实现。如果是NULL输出N并返回(注意return 不会直接结束程序,而是结束这次函数调用,如果是递归实现,可能还有很多次函数调用),否则输出data.


//前序遍历
void PrevOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}printf("%d ", root->data);PrevOrder(root->left);PrevOrder(root->right);
}

调用关系图(逻辑图):

 栈帧开辟销毁情况:

代码运行结果

 中序遍历

遍历的顺序不同就是访问头节点的顺序不同,中序遍历就是访问左子树后才访问头节点

//中序遍历
void InOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}InOrder(root->left);printf("%d ", root->data);InOrder(root->right);
}

我们先来看看运行结果

调用关系图(逻辑图):

 

后序遍历

//后序遍历
void PostOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}PostOrder(root->left);PostOrder(root->right);printf("%d ", root->data);}

执行结果:

调用关系图(逻辑图): 

 

http://www.yayakq.cn/news/304790/

相关文章:

  • 上海网站建设技术托管品牌管理的三大要素
  • wap 网站的盗链问题滑坡毕业设计代做网站
  • 中国万网首页大连谷歌seo
  • 技术支持 湘潭网站建设做炭化料的网站
  • 做电商网站的公司简介网站建设零基础教学
  • 网站备案背景幕布是什么自己做网站需要什么软件下载
  • seo网站有优化培训班吗wordpress 数据库函数
  • 常州行业网站制作wordpress more-link
  • 什么网站上面能接点小活做企业网站建设包含哪些内容
  • 公司网站建设会议纪要定制柜子品牌排行榜前十名
  • 小学网站模板源码四川seo
  • 电商网站订货wordpress在线支付表单
  • 建设门户网站的基本意义有哪些专业团队文案
  • 四川百度推广和seo优化seo标题优化裤子关键词
  • 长沙哪里可以做网站西安 网站开发 招聘
  • 做网站收费吗aspcms网站图片不显示
  • 上海企业网站黄页个人网站 免备案
  • 高端网站建设 工业常州交通建设管理有限公司网站
  • 建设银行新加坡分行网站南宁网站定制开发
  • 女頻做的最好的网站企业网站管理系统(多语言)
  • 做网站的调查问卷什么是网络营销渠道?网络营销渠道有何功能?
  • 漳州市城乡建设局网站网页美工设计之中使用的主要软件是
  • 浙江省城乡住房建设网站南昌网站建设公司价位
  • 网站添加标签云wordpress是h5页面跳转
  • 建设厅证书查询网站wordpress分段
  • 乌兰浩特建设网站肃宁县网站建设公司
  • 网上做设计兼职哪个网站好点旅游网站制作视频百度云
  • 赤峰是住房和城乡建设局网站app开发有几种方式
  • 如何做网站营销推广做资源网站
  • 广西营销型网站建设公司高端网站建设公司有哪些