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

icp主体备案号和网站备案号天津平台网站建设推荐

icp主体备案号和网站备案号,天津平台网站建设推荐,宁波seo推广服务,国家企业查询官网目录 1 543. 二叉树的直径 2 102. 二叉树的层序遍历 3 108. 将有序数组转换为二叉搜索树 菜鸟做题#xff0c;语言是 C 1 543. 二叉树的直径 这道题和 124. 二叉树中的最大路径和 太像了 题眼#xff1a;二叉树的 直径 是指树中任意两个节点之间 最长路径的长度 。…目录 1  543. 二叉树的直径 2  102. 二叉树的层序遍历 3  108. 将有序数组转换为二叉搜索树 菜鸟做题语言是 C 1  543. 二叉树的直径 这道题和  124. 二叉树中的最大路径和  太像了 题眼二叉树的 直径 是指树中任意两个节点之间 最长路径的长度 。 简而言之就是找出一条路径且这条路径上的节点最多。 解题思路 从下往上遍历二叉树当前子树中的最长路径 1 左子树中的最长路径 右子树中的最长路径向父节点自荐当前子树中的最长路径 1 max(左子树中的最长路径右子树中的最长路径) 为什么必须从 “左子树中的最长路径” 和 “右子树中的最长路径” 中选一个不能都要吗当然不行。我们要的是一条笔直的路径如果左右子树都带上那不就分叉了吗。 思路说明图 对于绿色节点在它作为根节点的子树中最长路径 1 左子树中的最长路径 右子树中的最长路径绿色节点左子节点向蓝色节点父节点自荐自荐的最长路径 1 max(左子树中的最长路径右子树中的最长路径)。对于蓝色节点在它作为根节点的子树中最长路径 1 左子树中的最长路径 右子树中的最长路径。以此类推。 class Solution { public:int ans 1;int helper(TreeNode * root) {if (!root) return 0;int ltree helper(root-left);int rtree helper(root-right);ans max(ans, 1 ltree rtree);return 1 max(ltree, rtree);}int diameterOfBinaryTree(TreeNode* root) {helper(root);return ans - 1;} }; 说明我们算的其实是最多节点数而路径长度是边的条数因此需要减一 return ans - 1; 2  102. 二叉树的层序遍历 是循环不是递归 层序遍历逐层地从左到右访问所有节点。 解题思路 出队从左到右遍历当前层中的每个节点入队将每个节点的左右子节点存入队列中出队从左到右遍历左右子节点即下一层中的每个节点 具体代码 ① 循环条件当队列中还有节点没有被遍历时即队列长度不为 0 时。 while (q.size()) {} ② 遍历某一层中的所有节点 int currentLevelSize q.size(); for (int i 0; i currentLevelSize; i) {TreeNode * node q.front();q.pop();// ... } 此时队列的大小等于当前层中的节点个数。 ③ 存入每个节点的左右子节点即下一层中的所有节点。 if (node-left) q.push(node-left); if (node-right) q.push(node-right); 只有节点不为空时才需要被访问。 class Solution { public:vectorvectorint levelOrder(TreeNode* root) {if (!root) return {};vectorvectorint ans;queueTreeNode * q;q.push(root);while (q.size()) {int currentLevelSize q.size();ans.push_back(vectorint ());for (int i 0; i currentLevelSize; i) {TreeNode * node q.front();q.pop();ans.back().push_back(node-val);if (node-left) q.push(node-left);if (node-right) q.push(node-right);}}return ans;} }; 3  108. 将有序数组转换为二叉搜索树 与对 105. 从前序与中序遍历序列构造二叉树 的理解有一点点像 可以理解成将有序数组视为中序遍历的结果并将其还原回二叉树。 中序遍历的结果数组的特点(左子树根节点右子树) 题眼高度平衡二叉树 是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。因此我们每次都取数组区间的中间值为根节点代码如下 int mid (left right) / 2; 完整代码 class Solution { public:TreeNode* helper(vectorint nums, int left, int right) {if (left right) return nullptr;int mid (left right) / 2;TreeNode* root new TreeNode(nums[mid]);root-left helper(nums, left, mid - 1);root-right helper(nums, mid 1, right);return root;}TreeNode* sortedArrayToBST(vectorint nums) {return helper(nums, 0, nums.size() - 1);} };
http://www.hkea.cn/news/14511415/

相关文章:

  • php学校网站源码深圳市门户网站建设怎么样
  • 网站域名301是什么意思短网址短链接生成器
  • 网站的权限设置专业网站制作推荐
  • 北京好网站制作公司哪家好杭州哪家网站建设好
  • 网站建设全部代码哈尔滨建设网站门户
  • 中信建投证券股份有限公司seo文章是什么
  • 网站建设和管理情况自查报告中国设计网室内
  • 辽宁东方建设工程有限公司网站电脑做网站怎么解析域名
  • 桃城网站建设代理手机2345网址大全
  • 网站建设及经营应解决好的问题安卓系统上怎样做网站前端开发
  • 桂林北站地图wordpress优化教程
  • 做网站一般像素青岛建设集团官方网站
  • 360可以做网站营销推广是干什么的
  • 营销型网站建设的特点wordpress漂流瓶插件
  • 免费网站制作软件wordpress erphpdown
  • 食品网站建设项目的预算wordpress设置tdk
  • 网站建设优化保定东莞网站竞价推广运营
  • 广汉网站建设ghxhwl北京网站设计公司价格
  • 江西省建设招标网站做哪个网站最简单
  • 目前做网站最流行的程序语言做网站一天能接多少单
  • 仁怀网站建设网络工程师需要学哪些知识
  • 长沙市建设发展集团有限公司网站湖南3合1网站建设
  • 新华路街道网站建设中国能源建设集团有限公司电子采购平台
  • 陕西省建设厅网站证件查询网站建设实战李静
  • 织梦网站模板安装公众微信平台
  • 淘宝店可以做团购的网站营销型网站建设哪家便宜
  • 免费做网站公司推荐wordpress调用discuz
  • 推广网站有什么方法网站小白怎么开始学网站建设
  • 永久免费的网站空间地方网站
  • 网络托管运营资深seo顾问