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

擦边球网站怎么做扬州公司做网站

擦边球网站怎么做,扬州公司做网站,遂平网站建设,网页素材网站免费普通二叉树的结点数#xff1a; 递归法#xff1a; 对二叉树进行前序or后序遍历#xff1a; typedef struct Tree {int data;Tree* leftChild;Tree* rightChild; }tree,*linklist; //计算普通二叉树的结点数 int nodenums(linklist node) {if(node nullptr) return 0; …普通二叉树的结点数 递归法 对二叉树进行前序or后序遍历 typedef struct Tree {int data;Tree* leftChild;Tree* rightChild; }tree,*linklist; //计算普通二叉树的结点数 int nodenums(linklist node) {if(node nullptr) return 0; //node为空就返回0int leftnums nodenums(node-leftChild); //左子树的数量通过递归计算出来int rightnums nodenums(node-rightChild); //右子树的数量通过递归计算出来return leftnums rightnums 1;返回左子树的数量 右子树的数量 1(根结点的数量) } 化简写法 typedef struct Tree {int data;Tree* leftChild;Tree* rightChild; }tree,*linklist; //计算普通二叉树的结点数 int nodenums(linklist node) {if(node nullptr) return 0;return 1 nodenums(node-leftChild) nodenums(node-rightChild); } 队列法 利用BFS的思想层序遍历 #include queue typedef struct Tree {int data;Tree* leftChild;Tree* rightChild; }tree,*linklist; //法二(BFS) int coutnode(linklist node) {queuelinklist q; //建立新的linklist型队列qif(node nullptr) q.push(node); //如果node不为空就把结点node推进队列int result 0;//result用来存结点数//BFS层序遍历while(q.empty()){int size q.size();for(int i 0;i size;i){linklist p q.front();q.pop();result; //记录结点数if(p-leftChild) q.push(node-leftChild);if(p-rightChild) q.push(node-rightChild);}}return result; } 完全二叉树的结点数 完全二叉树的本身会包含满二叉树可以简便写先判断最大的满二叉树的位置然后再利用普通二叉树的递归遍历方法进行计算。 如果遇到满二叉树则返回满二叉树的结点数可以利用公式2^n-1利用位运算(2 n) - 1。 (n为深度)也可以利用我前面的文章讲述的快速幂利用递归求出二次幂。  int nodenum(linklist node) {if(node nullptr) return 0;linklist left node-leftChild;linklist right node-rightChild;//左右子树深度int leftdepth 0;int rightdepth 0;while(left){left left-leftChild;leftdepth;}while(right){right right-rightChild;rightdepth;}//如果左右子树的深度相等就是满二叉树if(leftdepth rightdepth) return (2 leftdepth) - 1;//满二叉树的计算结点公式2^n-1return 1 nodenum(node-leftChild) nodenum(node-rightChild); } 判断平衡二叉树 二叉树中任意结点的左右子树的深度相差不超过 1那么它就是一棵平衡二叉树 。 所以abs(左子树深度 - 右子树深度)  1就不是平衡二叉树。 所以先按照最大深度的计算方法递归左右子树的最大深度然后判断是否符合平衡二叉树如果不是就return返回false最后return返回平衡二叉树的最大深度。 typedef struct Tree {int data;Tree* leftChild;Tree* rightChild; }tree,*linklist; //如果不是平衡二叉树那么就返回-1记录其不是平衡二叉树 int balancedepth(linklist node) {int leftdepth balancedepth(node-leftChild);if(leftdepth -1) return -1;int rightdepth balancedepth(node-rightChild);if(rightdepth -1) return -1;if(abs(leftdepth - rightdepth) 1) return -1;//不平衡return 1 max(leftdepth , rightdepth); } 输入一棵二叉树的根结点判断该树是不是平衡二叉树。 如果某二叉树中任意结点的左右子树的深度相差不超过 1那么它就是一棵平衡二叉树。 注意 规定空树也是一棵平衡二叉树。 数据范围 树中节点数量 [0,500]。 样例 输入二叉树[5,7,11,null,null,12,9,null,null,null,null]如下所示5/ \7 11/ \12 9输出true struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; class Solution { public:bool isBalanced(TreeNode* root) {int res dfs(root);if(res ! -1) return true;else return false;}int dfs(TreeNode* root){if(!root) return 0;int leftdepth dfs(root-left),rightdepth dfs(root-right);if(leftdepth -1 || rightdepth -1) return -1;if(abs(rightdepth - leftdepth) 1) return -1;return 1 max(leftdepth , rightdepth);} }; 今天内容到这里了感谢收看。
http://www.zqtcl.cn/news/110992/

相关文章:

  • 聊城设计网站商务网站的特点
  • 厦门做个网站多少钱工程建设范围
  • 百度推广官方网站在哪里制作网页
  • 济南集团网站建设方案沈阳手机网站制作
  • 网站备案号注销的结果做网站的外包能学到什么
  • 在线购物网站开发项目网站建设电话推广话术
  • 网站主体信息太原站扩建
  • 西平县住房和城乡建设局网站空间商网站
  • p2p网站建设cms一键生成图片
  • 甘肃省第八建设集团公司网站能够做物理题的网站
  • 团购网站建设方案建筑工程网校官网
  • 佛山建站网站模板小公司管理方法
  • 常德住房和城乡建设局网站做风险代理案源的网站
  • 手机网站开发人员选项wordpress加载媒体库
  • 做钓鱼网站用哪种编程语言张家界有实力seo优化费用
  • 如何做一个主题网站做网站必须有框架么
  • 建设网站需要什么知识上海高端网页设计
  • 电子商务网站建设基本流程公司网站建设平台
  • 域名没过期 网站打不开怎么办素马设计顾问讲解价格
  • 怎么做非法彩票网站贵州网站开发哪家便宜
  • 青岛市医疗保险网站wordpress七牛云
  • 哪个浏览器可以做网站查询网站的外链
  • 浅析社区网站的建设有了网站源码 怎么建设网站
  • 苏州网站排名优化系统网页设计师
  • 网站开发定制推广杭州河南省的网页制作
  • 北京随喜设计网站国内好的seo网站
  • 网站中宣传彩页怎么做的网站建设评估及分析
  • 东莞php网站建设素材网站php程序源码
  • 怎么做免费视频网站模版网站可以做seo吗
  • 备案期间怎么做网站微动漫怎么制作