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

网站开发代码h5福州网站设计企业建站

网站开发代码h5,福州网站设计企业建站,为什么建设银行的网站打不开,宜兴做阿里巴巴网站二叉树的构建及遍历 本题目的要求是#xff1a; 输入一个数组#xff0c;里面存放了若干个字符#xff0c;#代表了空指针#xff0c;数组中的顺序是 是先序遍历#xff0c;然后要求你用中序输出 首先我们要做的就是构造结构体#xff1a; typedef struct TreeNode {char…二叉树的构建及遍历 本题目的要求是 输入一个数组里面存放了若干个字符#代表了空指针数组中的顺序是 是先序遍历然后要求你用中序输出 首先我们要做的就是构造结构体 typedef struct TreeNode {char val;struct TreeNode* left;struct TreeNode* right; }TreeNode;然后用先序遍历构造二叉树 当数组的首元素为#或者“\0”即二叉树没有根节点为空树直接接返回 然后我们开辟新节点的空间 然后进行先序遍历构造二叉树 首先将newnode的值置为数组首元素同时下标count 然后递归newnode的左子树根节点*countcount传的是地址所以记得解引用随后递归右子树根节点即可最后返回newnode就是二叉树的根节点 TreeNode* maketree(char*arr,int*count) {if(arr[*count]#||arr[*count]\0){return NULL;}TreeNode* newnode (TreeNode*)malloc(sizeof(TreeNode));newnode-val arr[(*count)];newnode-left maketree(arr,count);(*count);newnode-right maketree(arr,count);return newnode; } 最后写一个中序遍历的输出 void Inorder(TreeNode* root) {if(rootNULL){return;}Inorder(root-left);printf(%c ,root-val);Inorder(root-right); }完整代码如下 #include stdio.h #includestdlib.h typedef struct TreeNode {char val;struct TreeNode* left;struct TreeNode* right; }TreeNode; TreeNode* maketree(char*arr,int*count) {if(arr[*count]#||arr[*count]\0){return NULL;}TreeNode* newnode (TreeNode*)malloc(sizeof(TreeNode));newnode-val arr[(*count)];newnode-left maketree(arr,count);(*count);newnode-right maketree(arr,count);return newnode; } void Inorder(TreeNode* root) {if(rootNULL){return;}Inorder(root-left);printf(%c ,root-val);Inorder(root-right); }int main() {char arr[101];scanf(%s,arr);int count 0;TreeNode* tree maketree(arr,count);Inorder(tree);return 0; }判断一颗二叉树是否是平衡二叉树 本题很简单了 直接判断左子树和右子树的高度的绝对值是否小于等于1即可 同时左子树的子树和右子树的子树也要同时递归 调用求二叉树高度的函数 int height(struct TreeNode* root) {if(rootNULL){return 0;}return fmax(height(root-left),height(root-right))1; } bool isBalanced(struct TreeNode* root) {if(rootNULL){return true;}return fabs(height(root-left) - height(root-right)) 1 isBalanced(root-left) isBalanced(root-right); }另一颗树的子树 本题就是判断一颗树的子树是否是另一棵树 所以我们首先要做的就是构造一个判断两棵树是否相等的函数 当两个树同时为空时也是相等的 当其中一个为空时肯定时不想同的 当root的值不等于subroot的值时肯定是不相等的 bool issame(struct TreeNode* root,struct TreeNode* subroot) {if(rootNULLsubrootNULL)return true;if(rootNULL||subrootNULL)return false;if(root-valsubroot-val){if(issame(root-left,subroot-left)issame(root-right,subroot-right))return true;}return false; }然后调用这个函数 当root和subroot相等时也符合题意 bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot) {if(rootNULL)return false;if(issame(root,subRoot))return true;return isSubtree(root-left,subRoot)||isSubtree(root-right,subRoot); }对称二叉树 其实判断二叉树是否对称就是左边和右边比较对折重合 即 左子树和右子树相同左子树的左子树后右子树的右子树相同 我们直接调用上一题的判断树是否相同的函数 然后拿左子树和右子树比较即可 当左子树的根节点和右子树的根节点不相等时只返回false bool issame(struct TreeNode* rootleft,struct TreeNode* rootright) {if(rootleftNULLrootrightNULL)return true;if(rootleftNULL||rootrightNULL)return false;if(rootleft-valrootright-val){if(issame(rootleft-left,rootright-right)issame(rootleft-right,rootright-left))return true;}return false; } bool isSymmetric(struct TreeNode* root) {if(root-leftNULLroot-rightNULL)return true;if(root-leftNULL||root-rightNULL)return false;if(root-left-valroot-right-val){if(issame(root-left,root-right))return true;}return false; }检查两颗树是否相同 这不简简单单和之前的函数差不多使用递归就是了 同时为空返回true 有一个为空返回false 两个根节点的值不相等返回false bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if(pNULLqNULL){return true;}if(pNULL||qNULL){return false;}if(p-val!q-val){return false;}return isSameTree(p-left,q-left)isSameTree(p-right,q-right); }翻转二叉树 反转二叉树就是把左子树变成右子树右子树变成左子树 很简单直接先开辟空间存放然后赋于即可 struct TreeNode* invertTree(struct TreeNode* root) {if (root NULL) {return NULL;}struct TreeNode* left invertTree(root-left);struct TreeNode* right invertTree(root-right);root-left right;root-right left;return root; }二叉树最大深度 最大深度不就是高度吗就是层数啊 直接递归就是左子树和右子树中深度大的那一个1 int maxDepth(struct TreeNode* root) {if(rootNULL)return 0;return fmax(maxDepth(root-left), maxDepth(root-right)) 1; }单值二叉树 单值二叉树就是二叉树所有节点的值都相等 二叉树为空符合题意返回true 左子树和右子树为空符合题意只有一个节点返回true 当有一个不为空时不为空子树根节点和根节点不相等直接返回false 当两个子树都不为空时判断两个子树的根节点是否相等不相等直接返回false然后递归左子树和右子树的根节点 bool isUnivalTree(struct TreeNode* root) {if(rootNULL)return true;if(root-leftNULLroot-rightNULL)return true;if(root-leftNULL||root-rightNULL){if(root-leftNULL){if(root-val!root-right-val)return false;}if(root-rightNULL){if(root-val!root-left-val)return false;}}if(root-left!NULLroot-right!NULL){if(root-val!root-left-val||root-val!root-right-val)return false;}return isUnivalTree(root-left)isUnivalTree(root-right); }好了今天的分享到这里就结束了谢谢大家
http://www.yutouwan.com/news/256709/

相关文章:

  • 樟木头网站建设软文是什么文章
  • 四川省凉亭建设工程有限公司网站什么是网络口碑营销
  • 北京做网站哪家公司最好内蒙网站建设赫伟创意星空科技
  • 毕设做桌面软件还是网站企业名录搜索网站
  • 国家建筑网站低价网站建设优化公司
  • 网站页面头部设计说明做网站的底图尺寸多大
  • 企业网站推广 知乎哪家公司建设网站好
  • 青岛做网站多少钱如何制作网站
  • 温州建站软件主题资源网站建设模块五作业
  • 网站建设技术app下载设计某网站的登录和注册程序
  • 常用的建站软件有哪些南宁代理记账
  • 商务网站建设毕业设计模板下载关于单位网站建设的
  • 石家庄定制网站建设十大不收费看盘软件网站
  • 网站开发资金投入5080电影电视剧大全
  • 各种网站名称大全电子商务网站建设实训总结
  • 巩义企业网站快速优化多少钱基于开源框架的网站开发
  • 网站建设项目报价单seo排名优化资源
  • 新闻类的网站如何做优化、网站开发需求 模板
  • 网站服务器申请电子商务网页设计模板
  • 获取网站访客qq网站如何做延迟加载
  • 营销型网站设计论文南京最新情况最新消息今天
  • 网站建设便捷百度一下百度主页官网
  • 昆明网站设计价格下载app软件到手机
  • 网站搬家数据库配置新闻博客软文自助推广
  • 建网站公司销售网络营销的专业网站
  • 做的网站图片显示一半网站建设流程报价
  • 做网站系统的过程衡阳做网站优化
  • 河南单位网站建设昆明网站排名优化
  • 做个网站需要多久网站建设套模板
  • 怎么做轴承网站企业网站怎么做的高大上