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

网站建设实训实训心得公众号编辑器哪个好

网站建设实训实训心得,公众号编辑器哪个好,圣辉友联刘金鹏做网站,中国建设银行 官方网站文章目录一、二叉树的深度优先遍历0.建立一棵树1. 前序遍历2.中序遍历3. 后序遍历二、二叉树的广度优先遍历层序遍历三、有关二叉树练习一、二叉树的深度优先遍历 学习二叉树结构#xff0c;最简单的方式就是遍历。 所谓二叉树遍历(Traversal)是按照某种特定的规则#xff… 文章目录一、二叉树的深度优先遍历0.建立一棵树1. 前序遍历2.中序遍历3. 后序遍历二、二叉树的广度优先遍历层序遍历三、有关二叉树练习一、二叉树的深度优先遍历 学习二叉树结构最简单的方式就是遍历。 所谓二叉树遍历(Traversal)是按照某种特定的规则依次对二叉 树中的节点进行相应的操作并且每个节点只操作一次。访问结点所做的操作依赖于具体的应用问题。 遍历是二叉树上最重要的运算之一也是二叉树上进行其它运算的基础。 按照规则二叉树的遍历有前序/中序/后序的递归结构遍历 0.建立一棵树 typedef char BTDataType;typedef struct BinaryTreeNode {BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;}BTNode;int main() {BTNode* A (BTNode*)malloc(sizeof(BTNode));A-data A;A-left NULL;A-right NULL;BTNode* B (BTNode*)malloc(sizeof(BTNode));B-data B;B-left NULL;B-right NULL;BTNode* C (BTNode*)malloc(sizeof(BTNode));C-data C;C-left NULL;C-right NULL;BTNode* D (BTNode*)malloc(sizeof(BTNode));D-data D;D-left NULL;D-right NULL;BTNode* E (BTNode*)malloc(sizeof(BTNode));E-data E;E-left NULL;E-right NULL;A-left B;A-right C;B-left D;B-right E;return 0; }结果如下 1. 前序遍历 访问根结点的操作发生在遍历其左右子树之前。 先访问根节点再到左子节点然后到右子节点。 根-左-右 //后序遍历 void PrevOrder(BTNode* root) {if (root NULL){return;}printf(%c , root-data);PrevOrder(root-left);PrevOrder(root-right); }2.中序遍历 中序遍历(Inorder Traversal)——访问根结点的操作发生在遍历其左右子树之中间。 先访问左子树再访问根再到右子树 左–根–右 由于NULL不打印出来故结果为 D-B-E-A-C 代码如下 //中序遍历 void InOrder(BTNode* root) {if (root NULL){return;}InOrder(root-left);printf(%c , root-data);InOrder(root-right); }代码分析 3. 后序遍历 后序遍历(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树之后。 先访问左子节点再访问右子节点最后访问根。 左–右–根 分析结果如下 打印结果为 D E B C A 代码如下 //后续遍历 void PostOrder(BTNode* root) {if (!root){return;}PostOrder(root-left);PostOrder(root-right);printf(%c , root-data); }代码分析如下 二叉树的前序中序后序遍历结果如下 二、二叉树的广度优先遍历 层序遍历 层序遍历除了先序遍历、中序遍历、后序遍历外还可以对二叉树进行层序遍历。设二叉树的根节点所在层数为1 层序遍历就是从所在二叉树的根节点出发首先访问第一层的树根节点然后从左到右访问第2层上的节点接着是第三层的节点 以此类推自上而下自左至右逐层访问树的结点的过程就是层序遍历。 层序遍历就是一层一层地访问先访问第一层 再访问第二层。 核心思想是上一层出去带下一层进来 实现的过程不使用递归实现使用队列实现 借助队列先进先出的特点 队列源代码 typedef struct BinaryTreeNode* QDataType;typedef struct QueueNode {QDataType data;struct QueueNode* next; }QNode;typedef struct Queue {QNode* head;QNode* tail;int size; }Queue;void QueueInit(Queue* pq) {assert(pq);pq-head NULL;pq-tail NULL;pq-size 0; }void QueueDestroy(Queue* pq) {assert(pq);QNode* cur pq-head;while (cur){QNode* del cur;cur cur-next;free(del);//del NULL;}pq-head pq-tail NULL;pq-size 0; }void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-data x;newnode-next NULL;if (pq-tail NULL){pq-head pq-tail newnode;}else{pq-tail-next newnode;pq-tail newnode;}pq-size; }void QueuePop(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));if (pq-head-next NULL){free(pq-head);pq-head pq-tail NULL;}else{QNode* del pq-head;pq-head pq-head-next;free(del);}pq-size--; }QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-data; }bool QueueEmpty(Queue* pq) {assert(pq);return pq-head NULL pq-tail NULL; } 实现层序遍历过程中二叉树借助队列源代码 //借助队列的先进先出来实现层级递进 void LevelOrder(BTNode* root) {//核心思路上一层出的时候带下一层Queue q;QueueInit(q);if (root){QueuePush(q, root);}while (!QueueEmpty(q)){BTNode* front QueueFront(q);QueuePop(q);printf(%c , front-data);//访问下一层if (front-left){QueuePush(q, front-left);}if (front-right){QueuePush(q, front-right);}}printf(\n);QueueDestroy(q); }三、有关二叉树练习 1.某完全二叉树按层次输出同一层从左到右的序列为 ABCDEFGH 。 该完全二叉树的前序序列为 A ABDHECFG B ABCDEFGH C HDBEAFCG D HDEBFGCA解析 已知该树为完全二叉树第一层只有一个节点第二层有2个节点第三层有4个节点… 容易知道该完全二叉树的高度是4还原可得 根据前序序列遍历先根再左子节点再右子节点选A 2.二叉树的先序遍历和中序遍历如下先序遍历EFHIGJK;中序遍历HFIEJKG.则二叉树根结点为 A E B F C G D H解析由二叉树的前序遍历可知根节点为E。 此时已经得出答案但我想还原这棵树 由中序遍历可知E是根节点那么E左边的所有节点为HFI右边的所有节点为JKG 由前序遍历可知E到F说明F是E的左子节点由中序遍历H到F说名H是F的左子节点。到这里可以还原二叉树的左半部分了右半部分同理。 3.设一课二叉树的中序遍历序列badce后序遍历序列bdeca 则二叉树前序遍历序列为____。 A adbce B decab C debac D abcde解析 由二叉树的后序遍历可知根节点为a。 由中序序列可知a的左子节点只有b右子节点右dce 又由后序遍历往前推可知c是a的右子节点 到这里已经可以推出整棵树了 所以该树的前序序列为abcde选D 4.某二叉树的后序遍历序列与中序遍历序列相同均为 ABCDEF 则按层次输出同一层从左到右的序列为 A FEDCBA B CBAFED C DEFCBA D ABCDEF解析 由二叉树的后序遍历可知根节点为F由中序遍历可知根节点F无右子节点。 F的左节点有ABCDE 又因为前序和中序都相同那么只有一种情况 所以答案选A
http://www.w-s-a.com/news/3936/

相关文章:

  • 怎么查网站是在哪里备案的广州电力建设有限公司网站
  • 做网站自己申请域名还是对方wordpress管理地址
  • 专门做二手书网站或appwordpress首页显示特定分类文章
  • 无锡网站设计厂家一建十个专业含金量排名
  • 网站刷链接怎么做成都高度网站技术建设公司
  • flash网站模板怎么用xml网站地图生成
  • 英文网站优化群晖wordpress中文
  • saas建站平台源码济南品牌网站建设公司
  • 网站建设一般是用哪个软件网站百度
  • 企业建站的作用是什么南宁公司网站开发
  • 厦门网站建设及维护门户网站开发视频教学
  • 可以做兼职的网站有哪些自动点击器永久免费版
  • 建购物网站怎么建呀网站怎么做中英文交互
  • 网站建设费用计入无形资产做网站用的主机
  • 佛山企业网站建设平台沈阳网站建设培训班
  • 河南企业网站优化外包网站怎么做来流量
  • 网站建设的参考文献网站设计网页的优缺点
  • WordPress多站點支付插件内江市网站建设培训
  • 做做网站已更新动漫制作专业需要学什么
  • dfv印花图案设计网站网站建设应该应聘什么岗位
  • 网站后台管理系统模板下载专业网站推广的公司哪家好
  • 克拉玛依市建设局网站网页设计板式重构
  • 网站新闻专题怎么做湖南营销型网站建设 要上磐石网络
  • 阿里云发布网站成都轨迹公布
  • php网站源码架构谷歌站群系统
  • 潮州网站seowordpress 调用置顶文章
  • 做带会员后台的网站用什么软件旅游网站建设资金请示
  • 商品网站怎么做wordpress 表情拉长
  • 商城网站设计费用网络公司怎样推广网站
  • 视频公司的网站设计工图网