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

重庆网站建设seo优化公司网站域名续费一年多少钱

重庆网站建设seo优化,公司网站域名续费一年多少钱,培训机构课程设置,网站建设 麦肯趋势day20 654.最大二叉树617.合并二叉树700.二叉搜索树中的搜索98.验证二叉搜索树 654.最大二叉树 题目链接 解题思路#xff1a; 本题属于构造二叉树#xff0c;需要使用前序遍历#xff0c;因为先构造中间节点#xff0c;然后递归构造左子树和右子树。 确定递归函数的参数… day20 654.最大二叉树617.合并二叉树700.二叉搜索树中的搜索98.验证二叉搜索树 654.最大二叉树 题目链接 解题思路 本题属于构造二叉树需要使用前序遍历因为先构造中间节点然后递归构造左子树和右子树。 确定递归函数的参数和返回值 参数传入的是存放元素的数组返回该数组构造的二叉树的头结点返回类型是指向节点的指针。 代码如下 TreeNode* constructMaximumBinaryTree(vectorint nums)确定终止条件 题目中说了输入的数组大小一定是大于等于1的所以我们不用考虑小于1的情况那么当递归遍历的时候如果传入的数组大小为1说明遍历到了叶子节点了。 那么应该定义一个新的节点并把这个数组的数值赋给新的节点然后返回这个节点。 这表示一个数组大小是1的时候构造了一个新的节点并返回。 代码如下 TreeNode* node new TreeNode(0); if (nums.size() 1) {node-val nums[0];return node; }确定单层递归的逻辑 这里有三步工作 先要找到数组中最大的值和对应的下标 最大的值构造根节点下标用来下一步分割数组。 代码如下 int maxValue 0; int maxValueIndex 0; for (int i 0; i nums.size(); i) {if (nums[i] maxValue) {maxValue nums[i];maxValueIndex i;} } TreeNode* node new TreeNode(0); node-val maxValue;最大值所在的下标左区间 构造左子树 这里要判断maxValueIndex 0因为要保证左区间至少有一个数值。 代码如下 if (maxValueIndex 0) {vectorint newVec(nums.begin(), nums.begin() maxValueIndex);node-left constructMaximumBinaryTree(newVec); }最大值所在的下标右区间 构造右子树 判断maxValueIndex (nums.size() - 1)确保右区间至少有一个数值。 代码如下 if (maxValueIndex (nums.size() - 1)) {vectorint newVec(nums.begin() maxValueIndex 1, nums.end());node-right constructMaximumBinaryTree(newVec); }整体代码如下 class Solution { public:TreeNode* constructMaximumBinaryTree(vectorint nums) {TreeNode* node new TreeNode(0);if (nums.size() 1) {node-val nums[0];return node;}// 找到数组中最大的值和对应的下标int maxValue 0;int maxValueIndex 0;for (int i 0; i nums.size(); i) {if (nums[i] maxValue) {maxValue nums[i];maxValueIndex i;}}node-val maxValue;// 最大值所在的下标左区间 构造左子树if (maxValueIndex 0) {vectorint newVec(nums.begin(), nums.begin() maxValueIndex);node-left constructMaximumBinaryTree(newVec);}// 最大值所在的下标右区间 构造右子树if (maxValueIndex (nums.size() - 1)) {vectorint newVec(nums.begin() maxValueIndex 1, nums.end());node-right constructMaximumBinaryTree(newVec);}return node;} }; 617.合并二叉树 题目链接 解题思路 递归三部曲来解决 确定递归函数的参数和返回值 首先要合入两个二叉树那么参数至少是要传入两个二叉树的根节点返回值就是合并之后二叉树的根节点。 代码如下 TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {确定终止条件 因为是传入了两个树那么就有两个树遍历的节点t1 和 t2如果t1 NULL 了两个树合并就应该是 t2 了如果t2也为NULL也无所谓合并之后就是NULL。 反过来如果t2 NULL那么两个数合并就是t1如果t1也为NULL也无所谓合并之后就是NULL。 代码如下 if (t1 NULL) return t2; // 如果t1为空合并之后就应该是t2 if (t2 NULL) return t1; // 如果t2为空合并之后就应该是t1确定单层递归的逻辑 单层递归的逻辑就比较好写了这里我们重复利用一下t1这个树t1就是合并之后树的根节点就是修改了原来树的结构。 那么单层递归中就要把两棵树的元素加到一起。 t1-val t2-val;接下来t1 的左子树是合并 t1左子树 t2左子树之后的左子树。 t1 的右子树是 合并 t1右子树 t2右子树之后的右子树。 最终t1就是合并之后的根节点。 代码如下 t1-left mergeTrees(t1-left, t2-left); t1-right mergeTrees(t1-right, t2-right); return t1;此时前序遍历完整代码就写出来了如下 整体代码如下 class Solution { public:TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {if (t1 NULL) return t2; // 如果t1为空合并之后就应该是t2if (t2 NULL) return t1; // 如果t2为空合并之后就应该是t1// 修改了t1的数值和结构t1-val t2-val; // 中t1-left mergeTrees(t1-left, t2-left); // 左t1-right mergeTrees(t1-right, t2-right); // 右return t1;} };700.二叉搜索树中的搜索 题目链接 解题思路 二叉搜索树是一个有序树 若它的左子树不空则左子树上所有结点的值均小于它的根结点的值若它的右子树不空则右子树上所有结点的值均大于它的根结点的值它的左、右子树也分别为二叉搜索树 1.确定递归函数的参数和返回值 递归函数的参数传入的就是根节点和要搜索的数值返回的就是以这个搜索数值所在的节点。 代码如下 TreeNode* searchBST(TreeNode* root, int val)确定终止条件 如果root为空或者找到这个数值了就返回root节点。 if (root NULL || root-val val) return root;确定单层递归的逻辑 看看二叉搜索树的单层递归逻辑有何不同。 因为二叉搜索树的节点是有序的所以可以有方向的去搜索。 如果root-val val搜索左子树如果root-val val就搜索右子树最后如果都没有搜索到就返回NULL。 代码如下 TreeNode* result NULL; if (root-val val) result searchBST(root-left, val); if (root-val val) result searchBST(root-right, val); return result;很多录友写递归函数的时候 习惯直接写 searchBST(root-left, val)却忘了 递归函数还有返回值。 递归函数的返回值是什么? 是 左子树如果搜索到了val要将该节点返回。 如果不用一个变量将其接住那么返回值不就没了。 所以要 result searchBST(root-left, val)。 整体代码如下 class Solution { public:TreeNode* searchBST(TreeNode* root, int val) {if (root NULL || root-val val) return root;TreeNode* result NULL;if (root-val val) result searchBST(root-left, val);if (root-val val) result searchBST(root-right, val);return result;} };98.验证二叉搜索树
http://www.hkea.cn/news/14490684/

相关文章:

  • 青海省建设网站价格低网站正在建设 下载
  • 个人 邮箱 含网站 域名wordpress修改器
  • 镇江专业网站建设单页静态网站怎么做
  • 网站开发常用工具编程平台有哪些
  • 浙江五联建设有限公司网站企业微信小程序制作
  • 西安哪家公司做网站好什么是网站优化
  • 做软装素材从哪些网站找长春信息网招聘
  • 淘客网站如何做推广电商工作有哪些职位
  • 控制台网站龙岗企业网站改版公司
  • 做财经比较好的网站有哪些昆明官网seo厂家
  • 信息如何优化上百度首页惠州seo外包服务
  • 免费的课程设计哪个网站有开发公司支付前期物业开办费包括哪些内容
  • 网站制作作业宣威市住房和城乡建设局网站下载中心
  • 一个简易网站怎么做营销代码是什么
  • 吴忠住房和城乡建设网站自学网站建设和seo
  • 一个网站主机多少钱邯郸手机网站开发价格
  • 专做海岛游的网站兰溪建设网站
  • 吴江住房和城乡建设局网站睢宁微网站开发
  • 做网站推广常识题库及答案网站被k后换域名 做301之外_之前发的外链怎么办
  • 怎么做网站黑链谷歌推广平台
  • 电商网站设计系列网站建设和管理心得
  • 湛江专业自助建站详情最新设计网站大全
  • 海洋专业做网站怎么查网站的域名备案价格
  • 定制网站建设的释义网站关键字描述
  • 装修公司网站源代码网站后台设计培训学校
  • 广州市公司网站建设平台如何申请网上商城
  • 如何进行一个网站建设移动端优秀网站
  • 上海网站建设 浦东领手工在家做的网站2019
  • 秋莱网站建设住房建设厅的网站首页
  • 常州网站建设企业网站制作深圳专业建站公司