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

衡阳网站优化教程群排名优化软件官网

衡阳网站优化教程,群排名优化软件官网,遵义网站建设中心,俄罗斯搜索引擎入口 yandex513. 找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 思路:找到最低层中最左侧的节点值,比较适合层序遍历,返回最…

513. 找树左下角的值

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

示例 1:

输入: root = [2,1,3]
输出: 1

思路:找到最低层中最左侧的节点值,比较适合层序遍历,返回最低层的第一个值即可。

细节:判断是否是最低层,需要保存节点的当前层数。可以用queue<pair>来保存pair保存<节点指针,层数>

/*** 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 findBottomLeftValue(TreeNode* root) {if(!root) return -1;queue<pair<TreeNode*,int>> q;q.push({root,1});int deepthMax=1;int ret=root->val;while(!q.empty()){pair<TreeNode*,int> pariFront=q.front();TreeNode* nodeFront=pariFront.first;int deepth=pariFront.second;//判断是否是更低的一层if(deepth>deepthMax){deepthMax=deepth;ret=nodeFront->val;}q.pop();if(nodeFront->left) q.push({nodeFront->left,deepth+1});if(nodeFront->right) q.push({nodeFront->right,deepth+1});}return ret;}
};
  • 时间复杂度:O(n),其中 nnn 是二叉树的节点数目。



654. 最大二叉树

给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:

  1. 创建一个根节点,其值为 nums 中的最大值。
  2. 递归地在最大值 左边 的 子数组前缀上 构建左子树。
  3. 递归地在最大值 右边 的 子数组后缀上 构建右子树。

返回 nums 构建的 最大二叉树 

示例 1:

输入:nums = [3,2,1,6,0,5]
输出:[6,3,5,null,2,0,null,null,1]
解释:递归调用如下所示:
- [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5] 。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1] 。- 空数组,无子节点。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1] 。- 空数组,无子节点。- 只有一个元素,所以子节点是一个值为 1 的节点。- [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 [] 。- 只有一个元素,所以子节点是一个值为 0 的节点。- 空数组,无子节点。

 思路:最简单的方法是直接按照题目描述进行模拟。

左子树为 construct(nums,left,best−1)

右子树为 construct(nums,best+1,right)

当递归到一个空数组时,便可以返回一棵空的树。

/*** 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 findMaxIndex(vector<int>& nums){int ret=0;for(int i=1;i<nums.size();i++){if(nums[i]>nums[ret]) ret=i;}return ret;}TreeNode* constructMaximumBinaryTree(vector<int>& nums) {if(nums.empty()) return nullptr;int maxIndex=findMaxIndex(nums);vector<int> leftNums(nums.begin(),nums.begin()+maxIndex);vector<int> rightNums(nums.begin()+maxIndex+1,nums.end());TreeNode* root=new TreeNode(nums[maxIndex],constructMaximumBinaryTree(leftNums), //左子树constructMaximumBinaryTree(rightNums)); //右子树return root;}
};

时间复杂度:O(n^2),其中 nnn 是数组 nums\textit{nums}nums 的长度。在最坏的情况下,数组严格递增或递减,需要递归 n 层,第 i (0≤i<n)层需要遍历 n−i个元素以找出最大值,总时间复杂度为 O(n2)

思路2:利用单调栈可以实现时间复杂度O(n)

代码随想录

http://www.yayakq.cn/news/83759/

相关文章:

  • 怎么做自己的网站自建一个页面门户网站营销怎么做
  • 小灯具网站建设方案大连企业网站建站
  • 租车公司网站模板wordpress英文企业主题
  • 程家桥街道网站建设wordpress更好用吗
  • 企业在公司做的网站看不到阿克苏市建设银行网站
  • 旅游网站首页设计大概图邢台建网站
  • 微商城网站建设公司的价格邢台企业网站建设好么
  • 南通网站建设方案外包python做的网站有什么漏洞
  • 电子 网站模板wordpress全站加速
  • 为什么建手机网站在那个网站可以搜索做凉菜视频
  • 网站模板目录扫描电商主题wordpress
  • 怎么设计自己的网站做网站花多少钱
  • 西安网站建设公司平台网站推广方法 优帮云
  • 网站dns服务深圳住房和建设局网站 招标
  • 河南省教育类网站前置审批提升学历研究生
  • 我要建网站大良陈村网站建设
  • dw怎么做网站如何能快速搜到新做网站链接
  • 萧山网站建设推广网信息发布平台
  • 手机网站建设专业服务公司物流公司做网站注重什么问题
  • 淘宝刷单网站开发购物型网站
  • 百度网站优点北京网站优化方案
  • 网站虚拟空间过期域名注册流程
  • 深圳建站公司兴田德润放心wordpress模版如何使用教程
  • 网站设计是用什么软件做网站界面分析
  • 绿色食品网站模板南沙免费网站建设
  • 网站设计毕业设计论文专业的高密网站建设
  • 中国工厂网站广告设计专业描述
  • 兰州市网站建设公司找别人做的淘客网站 会不会有问题
  • seo网站优化推广费用怎么开网店新手入门拼多多店铺
  • 网站由哪些部分组成部分组成建设网站不要服务器可以吗