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

一流门户网站建设网络科技公司网站建设

一流门户网站建设,网络科技公司网站建设,seo服务公司上海,外贸网站模板建设1. 二叉树不易构建 在leetcode中刷题时,如果没有会员就需要将代码拷贝到本地的编译器进行调试。但是leetcode中有一类题可谓是毒瘤,那就是二叉树的题。 要调试二叉树有关的题需要根据测试用例给出的前序遍历,自己构建一个二叉树,…

1. 二叉树不易构建

在leetcode中刷题时,如果没有会员就需要将代码拷贝到本地的编译器进行调试。但是leetcode中有一类题可谓是毒瘤,那就是二叉树的题。

要调试二叉树有关的题需要根据测试用例给出的前序遍历,自己构建一个二叉树,非常不方便。

作为一个懒人,在此之前我的解决办法就是硬看程序,反复检查,但是确实有点折磨了。

前几天在刷二叉树有关的题时心血来潮写了一个函数来帮助构建二叉树。

2. 代码

#include <iostream>
#include <queue>
using namespace std;
#define null -1struct 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) {}
};TreeNode* construct(vector<int>& nums)
{int n = nums.size();TreeNode* newnode = nullptr;queue<TreeNode*> q;if (n != 0){int i = 0;newnode = new TreeNode(nums[i++]);q.push(newnode);while (!q.empty()){if (i < n && nums[i] != null){q.front()->left = new TreeNode(nums[i]);q.push(q.front()->left);}i++;if (i < n && nums[i] != null){q.front()->right = new TreeNode(nums[i]);q.push(q.front()->right);}i++;q.pop();}}return newnode;
}

leetcode给出的前序遍历中,空结点通常用null来表示,在程序中我们可以用一个数据范围之外的数来表示空结点,并将null定义为这个数。上面的代码中用的是-1。

我们用这个函数来帮助我们调试上面的这道题:

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
#define null -1struct 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:TreeNode* ans;int count, ansCount;int dfs(TreeNode* root){if (root == nullptr) return 0;count++;int left = dfs(root->left);int right = dfs(root->right);count--;if (left == right && count + left >= ansCount){ans = root;ansCount = count + left;}return max(left, right) + 1;}TreeNode* lcaDeepestLeaves(TreeNode* root) {ans = nullptr;count = ansCount = 0;dfs(root);return ans;}
};TreeNode* construct(vector<int>& nums)
{int n = nums.size();TreeNode* newnode = nullptr;queue<TreeNode*> q;if (n != 0){int i = 0;newnode = new TreeNode(nums[i++]);q.push(newnode);while (!q.empty()){if (i < n && nums[i] != null){q.front()->left = new TreeNode(nums[i]);q.push(q.front()->left);}i++;if (i < n && nums[i] != null){q.front()->right = new TreeNode(nums[i]);q.push(q.front()->right);}i++;q.pop();}}return newnode;
}int main()
{vector<int> nums = { 3,5,1,6,2,0,8,null,null,7,4 };cout << Solution().lcaDeepestLeaves(construct(nums))->val << endl;
}

这下就方便多了。

如果函数的返回值是 TreeNode* 的话,主函数的写法也可以直接照搬。

http://www.dtcms.com/wzjs/269960.html

相关文章:

  • 做网站是干嘛seo排名优化联系13火星软件
  • 京东如何进行网站建设百度推广多少钱一个月
  • php怎么做p2p网站最近新闻热点事件
  • 企业网站建设平台网络营销方式方法
  • 美工培训班学杭州网站优化咨询
  • jsp怎么做购物网站b2b推广网站
  • 网站地图在线生成百度客户服务电话是多少
  • java做网站教程视频长沙专业网络推广公司
  • 西安网站开发海外营销方案
  • 大连建设安全网站广东疫情最新资讯
  • 冬青街 做网站竞价排名适合百度这样的网络平台吗
  • 广东网络公司网站建设html静态网页制作
  • 西安市城乡建设管理局网站的公示栏6广州seo网络优化公司
  • 服装网站建设方案网站建设流程
  • 公司网站制作申请报告企业网站模板免费
  • 网站建设永远在路上推广策划
  • 网站建设没有签定合同网页设计制作
  • 卫生局网站建设优化培训内容
  • 淘宝网站怎么做视频商业推广费用一般多少
  • 谁有做网站比较厉害的seo网络优化师就业前景
  • 临淄建设局网站福建优化seo
  • wordpress即时聊天插件网页搜索优化
  • 萍缘网站建设工作找公司做网站多少钱
  • 做网站的说3年3年包括什么软件搜索引擎优化需要多少钱
  • wordpress升级插件出现意外错误百度笔记排名优化
  • 长沙网站制作公司有哪些搜索引擎营销sem包括
  • 受欢迎的购物网站建设360收录
  • 画廊网站建设关键词工具软件
  • seo建站还有市场吗关键词指数查询工具
  • 太原网站制作定制开发怎么申请网址