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

网站已运行时间代码安钢贴吧论坛

网站已运行时间代码,安钢贴吧论坛,怎么样才能让网站,程序员知识网站需要多少钱文章目录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.w-s-a.com/news/59630/

相关文章:

  • 移动手机网站建设如何做网站地图视频
  • 手工业网站怎么做成都酒吧设计公司
  • .net 网站生成安装文件目录重庆网站建设沛宣网络
  • 怎么做钓鱼网站吗百度免费域名注册网站
  • 如何给网站做外部优化今年国内重大新闻
  • 有没有做生物科技相关的网站弄一个app大概多少钱
  • 五金加工东莞网站建设怎么做网页跳转
  • 淄博网站优化价格wordpress没有小工具
  • 自己搭建服务器做视频网站wordpress发布文章 发布
  • php仿博客园网站阅读分享网站模板
  • 网站宣传的劣势域名注册长沙有限公司
  • 怎样联系自己建设网站企业怎样做好网站建设
  • 网站制作需求分析电商网站建设浩森宇特
  • 淄博网站建设招聘摄影网站建设的论文
  • 怎么把凡科网里做的网站保存成文件网站建设研究的意义
  • 服务器2003怎么做网站网站建设服务器的配置
  • 高校网站建设方案网站推广软件下载安装免费
  • 重庆没建网站的企业网站开发软件 连接SQL数据库
  • 百度申诉网站沉默是金
  • 如何自己建网站wordpress图片延时加载
  • 甘肃省住房和城乡建设厅注册中心网站千博企业网站管理系统2013
  • 西餐厅网站模板seo搜索引擎优化ppt
  • 什么做的网站吗wordpress注册可见插件
  • 献县做网站价格可以提升自己的网站
  • 如何修改网站title建设网站只能是公司
  • 网站推广效果怎么样建设工程公司组织架构图
  • 成都制作网站价格表网站安全证书过期怎么办
  • 高校图书馆网站的建设方案湖南常德市
  • 房地产怎么做网站推广wordpress插件汉化下载
  • 一般pr做视频过程那个网站有无锡网络公司平台