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

网站首页设计定位企业管理信息系统网站

网站首页设计定位,企业管理信息系统网站,相亲网站,模板企业网站1.简介 二叉树是一种每个节点最多有两个子节点的树结构#xff0c;通常包括#xff1a;根节点、左子树、右子树。 满二叉树#xff1a; 如果一棵二叉树只有度为0的结点和度为2的结点#xff0c;并且度为0的结点在同一层上#xff0c;则这棵二叉树为满二叉树。深度为k通常包括根节点、左子树、右子树。 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点并且度为0的结点在同一层上则这棵二叉树为满二叉树。深度为k有2^k - 1个节点。 完全二叉树 除了最底层节点可能没填满外其余每层节点数都达到最大值且最下面一层节点都集中在该层最左边若干位置。若最底层为k层则该层包含1~2^(k-1)个节点。 优先级队列其实是一个堆堆就是一棵完全二叉树同时保证父子节点的顺序关系。 二叉搜索树 二叉搜索树有数值是一个有序树。 若左子树不空则左子树上所有节点值均小于根节点值。 若右子树不空则右子树上所有节点值均大于根节点值。 左右子树分别为二叉搜索树 平衡二叉搜索树 任意节点的左子树和右子树高度差不超过1空树仅有一个节点也是一种平衡二叉搜索树 C种map、set、multimap、multiset的底层实现是平衡二叉搜索树(红黑树)所以增删时间复杂度O(logn)unordered_map、unordered_set底层实现是哈希表理想情况具有O(1)的增删时间复杂度最坏情况O(n)。 二叉树存储方式 链式存储(指针)、顺序存储(数组) 二叉树定义 #include iostream// 定义二叉树节点结构 struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} };int main() {// 创建二叉树节点TreeNode* root new TreeNode(1);root-left new TreeNode(2);root-right new TreeNode(3);root-left-left new TreeNode(4);root-left-right new TreeNode(5);// 访问二叉树节点的数值std::cout The value of the root node is: root-val std::endl;std::cout The value of the left child of the root is: root-left-val std::endl;// 释放二叉树节点的内存delete root-left-left;delete root-left-right;delete root-left;delete root-right;delete root;return 0; } 2.二叉树遍历 常用于图论 深度优先遍历先往深走、遇到叶子节点再往回走。(前序、中序、后续遍历递归法、迭代法) 广度优先遍历一层一层的去遍历。层次遍历迭代法 前中后指的是中间节点遍历顺序 前序中左右          5 4 1 2 6 7 8 中序左中右          1 4 2 5 7 6 8 后序左右中          1 2 4 7 8 6 5 递归法  前序遍历 class Solution {public:void traversal(TreeNode* cur, vectorint vec) {if (cur NULL) return;vec.push_back(cur-val);traversal(cur-left,vec); traversal(cur-right,vec);}vectorint preorderTraversal(TreeNode* root) {vectorint result;traversal(root, result);return result;} }; 中序遍历 class Solution {public:void traversal(TreeNode* cur, vectorint vec) {if (cur NULL) return;traversal(cur-left,vec);vec.push_back(cur-val); traversal(cur-right,vec);}vectorint preorderTraversal(TreeNode* root) {vectorint result;traversal(root, result);return result;} }; 后序遍历 class Solution {public:void traversal(TreeNode* cur, vectorint vec) {if (cur NULL) return;traversal(cur-left,vec); traversal(cur-right,vec);vec.push_back(cur-val);}vectorint preorderTraversal(TreeNode* root) {vectorint result;traversal(root, result);return result;} }; 迭代法 前序遍历 class Solution { public:vectorint preorderTraversal(TreeNode* root) {stackTreeNode* st;vectorint result;st.push(root);while (!st.empty()){TreeNode* node st.top();st.pop();result.push_back(node-val);if (node-right) st.push(node-right);if (node-left) st.push(node-left);}return result;} };中序遍历 class Solution { public:vectorint preorderTraversal(TreeNode* root) {stackTreeNode* st;vectorint result;TreeNode* cur root;while (cur ! NULL || !st.empty()){if (cur ! NULL){st.push(cur);cur cur-left;}else{cur st.top();st.pop();result.push_back(cur-val);cur cur-right;}}return result;} };后序遍历 class Solution { public:vectorint preorderTraversal(TreeNode* root) {stackTreeNode* st;vectorint result;if (root NULL) return result;st.push(root);while (!st.empty()){TreeNode* node st.top();st.pop();result.push_back(node-val);if (node-left) st.push(node-left);if (node-right) st.push(node-right);}reverse(result.begin(),result. End());return result;} };3.例题 示例 1 输入root [1,7,0,7,-8,null,null] 输出2 解释 第 1 层各元素之和为 1 第 2 层各元素之和为 7 0 7 第 3 层各元素之和为 7 -8 -1 所以我们返回第 2 层的层号它的层内元素之和最大。示例 2 输入root [989,null,10250,98693,-89388,null,null,null,-32127] 输出2 深度优先搜索  /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution {vectorint sum;void dfs(TreeNode* node,int level){if(sum.size() level){sum.push_back(node-val);}else{sum[level]node-val;}if(node-left){dfs(node-left,level1);}if(node-right){dfs(node-right,level1);}}public:int maxLevelSum(TreeNode* root) {dfs(root,0);int ans 0;for(int i 0;isum.size();i){if(sum[i]sum[ans]){ans i;}}return ans1;} }; 广度优先搜索 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution { public:int maxLevelSum(TreeNode* root) {int ans 1,maxSum root-val;vectorTreeNode*q {root};for(int level 1;!q.empty();level){vectorTreeNode* nq;int sum 0;for (auto node:q) {sum node-val;if (node-left){//用于在容器尾部直接构造一个新元素可以避免额外的拷贝或移动操作。nq.emplace_back(node-left);}if(node-right){nq.emplace_back(node-right);}}if (sum maxSum) {maxSum sum;ans level;}//通过 move(nq)我们将 nq 的所有权ownership转移给 q。//这意味着实际上并不会进行元素的复制而是直接将 nq 中的元素转移到 q 中同时 nq 被置为空。q move(nq);}return ans;} };
http://www.zqtcl.cn/news/977453/

相关文章:

  • 网站开发要花多少钱wordpress网站邀请码
  • 社旗网站设计小程序制作用华网天下优惠
  • 建设产品网站代理注册企业邮箱
  • 购物网站建设费用珠海本地网站
  • 做电商网站前期做什么工作网站后台jsp怎么做分页
  • 百家利网站开发搜索引擎分哪三类
  • 安徽集团网站建设深圳最新通告今天
  • 公司网站主机流量30g每月够用吗攀枝花网站网站建设
  • 淘宝做图片的网站手机网站北京
  • 重庆网站首页排名公司网站公众号小程序开发公司
  • 河源网站制作1993seo福州室内设计公司排名
  • 哪里有做装修网站网站开发总出现出现404
  • 做a漫画在线观看网站策划营销型网站
  • 怎么 从头开始建设一个网站临沂高端网站建设
  • 网页设计制作网站素材传奇代理平台
  • 公司建站网站软文营销方案
  • 成品短视频网站源码搭建免费温州外贸网站制作
  • 旅游公司网站建设pptwordpress 用户增强
  • wordpress 最新东莞seo技术培训
  • 上海微网站开发网站 选项卡 图标
  • 淘宝网站建设的目标什么做网站公司 营销
  • 360企业网站认证wordpress 个人照片
  • 韩国私人网站服务器创业做网站APP开发
  • 成都网站建设推来客网站系统报价wordpress 本地图片 图床
  • 跨境电商怎么做流程青岛网站建设seo
  • 怎么搭建网站平台网站建设相关文献
  • 网站前面的小图标怎么做wordpress文章页广告插件
  • 设计制作一个 个人主页网站淄博做网站的公司都有哪些
  • 10月哪个网站做电影票活动宁波设计公司有哪些
  • 网站建设的pest分析公司erp系统