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

盐城北京网站建设网站层级关系

盐城北京网站建设,网站层级关系,wordpress输出响应式图片,360免费wifi创建失败文章目录1.二叉树的遍历1.1前序、中序以及后序遍历1.2代码测试1.3层序遍历1.4二叉树遍历习题2.节点个数以及高度2.1二叉树节点个数2.2叶子节点个树2.3第k层节点个数2.4树的高度1.二叉树的遍历 1.1前序、中序以及后序遍历 学习二叉树结构#xff0c;最简单的方式就是遍历。所… 文章目录1.二叉树的遍历1.1前序、中序以及后序遍历1.2代码测试1.3层序遍历1.4二叉树遍历习题2.节点个数以及高度2.1二叉树节点个数2.2叶子节点个树2.3第k层节点个数2.4树的高度1.二叉树的遍历 1.1前序、中序以及后序遍历 学习二叉树结构最简单的方式就是遍历。所谓二叉树遍历(Traversal)是按照某种特定的规则依次对二叉树中的节点进行相应的操作并且每个节点只操作一次。访问结点所做的操作依赖于具体的应用问题。 遍历是二叉树上最重要的运算之一也是二叉树上进行其它运算的基础。 按照规则二叉树的遍历有前序/中序/后序的递归结构遍历 前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。中序遍历(Inorder Traversal)——访问根结点的操作发生在遍历其左右子树之中间。后序遍历(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树之后。 由于被访问的结点必是某子树的根所以N(Node、L(Left subtree和R(Right subtree又可解释为根、根的左子树和根的右子树。NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历 前序遍历 如上图同理 中序遍历 后序遍历 1.2代码测试 前序代码 void PreOrder(BTNode* root) {if (root NULL){printf(NULL-);return;//这里的return很重要我们需要回归到原来的函数接着执行下面的语句}printf(%d-, root-data);PreOrder(root-left);PreOrder(root-right); }这里printf(“%d-”, root-data);语句的摆放位置实际上就是前序中序后序的区别我们采用递归来解决这个问题当然这部分需要对函数栈帧的创建和销毁理解 #includestdio.h #includestdlib.h typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right; }BTNode; BTNode* BuyBTNode(BTDataType x) {BTNode* newnode (BTNode*)malloc(sizeof(BTNode));if (newnode NULL){perror(malloc fail);}newnode-data x;newnode-left newnode-right NULL;return newnode; } void PreOrder(BTNode* root) {if (root NULL){printf(NULL-);return;}printf(%d-, root-data);PreOrder(root-left);PreOrder(root-right); }int main() {BTNode* n1 BuyBTNode(1);BTNode* n2 BuyBTNode(2);BTNode* n3 BuyBTNode(3);BTNode* n4 BuyBTNode(4);BTNode* n5 BuyBTNode(5);BTNode* n6 BuyBTNode(6);n1-left n2;n1-right n4;n2-left n3;n4-left n5;n4-right n6;PreOrder(n1);}1.3层序遍历 层序遍历除了先序遍历、中序遍历、后序遍历外还可以对二叉树进行层序遍历。设二叉树的根节点所在层数为1层序遍历就是从所在二叉树的根节点出发首先访问第一层的树根节点然后从左到右访问第2层上的节点接着是第三层的节点以此类推自上而下自左至右逐层访问树的结点的过程就是层序遍历。 1.4二叉树遍历习题 1.某完全二叉树按层次输出同一层从左到右的序列为 ABCDEFGH 。该完全二叉树的前序序列为 A ABDHECFG B ABCDEFGH C HDBEAFCG D HDEBFGCA 2.二叉树的先序遍历和中序遍历如下先序遍历EFHIGJK;中序遍历HFIEJKG.则二叉树根结点为 A E B F C G D H 3.设一课二叉树的中序遍历序列badce后序遍历序列bdeca则二叉树前序遍历序列为____。 A adbce B decab C debac D abcde 4.某二叉树的后序遍历序列与中序遍历序列相同均为 ABCDEF 则按层次输出同一层从左到右的序列 为 A FEDCBA B CBAFED C DEFCBA D ABCDEF 2.节点个数以及高度 2.1二叉树节点个数 int BinaryTreeSize(BTNode* root) {if (root NULL){return;}int size 0;size;BinaryTreeSize(root-left);BinaryTreeSize(root-right);return size; }我们首先来看这段代码能成功计算出来吗 显然运行结果错误因为函数栈帧创建时每个size都不是加在一个size上所以实际上只有第一次的起了效果所以输出1 那我们修改size为静态变量 int BinaryTreeSize(BTNode* root) {if (root NULL){return;}static int size 0;size;BinaryTreeSize(root-left);BinaryTreeSize(root-right);return size; }显然第一次结果是正确的但是我们多运行几次发现size每次都会加6出现这种情况正因为他是静态变量只经历一次初始化所以这种方法也行不通 这是我们想到了全局变量 int size 0; int BinaryTreeSize(BTNode* root) {if (root NULL){return;}size;BinaryTreeSize(root-left);BinaryTreeSize(root-right);return size; } int main() {BTNode* n1 BuyBTNode(1);BTNode* n2 BuyBTNode(2);BTNode* n3 BuyBTNode(3);BTNode* n4 BuyBTNode(4);BTNode* n5 BuyBTNode(5);BTNode* n6 BuyBTNode(6);n1-left n2;n1-right n4;n2-left n3;n4-left n5;n4-right n6;PreOrder(n1);printf(\n);size 0;printf(size%d\n,BinaryTreeSize(n1));size 0;printf(size%d\n, BinaryTreeSize(n1));size 0;printf(size%d\n, BinaryTreeSize(n1)); }最优解 return root NULL ? 0 : BinaryTreeSize(root-left) BinaryTreeSize(root-right) 1;2.2叶子节点个树 int BinaryTreeLeafSize(BTNode* root) {if (root NULL){return 0;}if (root-left NULL root-right NULL){return 1;}return(BinaryTreeLeafSize(root-left) BinaryTreeLeafSize(root-right)); }2.3第k层节点个数 int BinaryTreeLevelKSize(BTNode* root, int k) {if (root NULL){return 0;}if (k 1){return 1;}return BinaryTreeLevelKSize(root-left, k - 1) BinaryTreeLevelKSize(root-right, k - 1); }2.4树的高度 int TreeHeight(BTNode* root) {if (root NULL){return 0;}int leftHeight TreeHeight(root-left);int RightHeight TreeHeight(root-right);return leftHeight RightHeight ? leftHeight 1 : RightHeight 1; }
http://www.hkea.cn/news/14465383/

相关文章:

  • 如何让网站被百度收录详情页设计图片
  • 做网站是用什么软件运营培训班学费大概多少
  • 网站绝对路径301如何发布网站教程
  • 为什么选择做游戏网站南通营销网站制作
  • 改了网站关键词用自己的名字设计logo
  • 做3d效果图的网站有哪些做网站可以在哪儿接活
  • 关于服装的网站规划与设计大兴网站建设报价
  • 网站域名要怎样规划沈阳百度关键词推广
  • 网站已经申请了域名 接下来怎么网站做任务包括什么
  • 四川有那些网站建设公司做网站要多少钱呀
  • 湖北可以做网站的公司大庆建设公司网站
  • 深圳网站建设易佰讯明灯赣州网络推广
  • 建设工程质量检测公司网站优化网站标题是什么意思
  • 企业做网站有用么怎么开一个平台
  • 免费的网站推广平台网站搭建网站
  • 做网站要求百度上怎么发布作品
  • 兰州网站建设优化推广四级a做爰片免费网站
  • 怎么做区块链网站市场调研
  • 不同的网站有不同的风格2022年企业所得税最新标准
  • 杭州做购物网站住房和城乡建设管理局官网
  • 网站开发与客户沟通wordpress首页幻灯
  • 网站备案 山东核验点无锡做网站优化哪家好
  • 电子商务网站建设初学视频教程外贸企业建站公司
  • 用QQ群做网站排名郑州做软件的公司
  • 百度网站建设如何温州小学网站建设
  • 仙踪林老狼网站欢迎您拍照手机怎么做网站免费的
  • 金色 网站 模板注册建公司网站
  • 2018什么语言做网站比较好wordpress更改站点地址
  • 网站推广句子公司注册成本
  • 郑州怎样建设公司网站社交网站开发公司