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

做网站的公司58同城推广

做网站的公司,58同城推广,wordpress 主题 结构,廊坊专门做网站513.找树左下角的值 leetcode题目地址 题目链接/文章讲解/视频讲解 如果使用递归法&#xff0c;如何判断是最后一行&#xff1a; 其实就是深度最大的叶子节点一定是最后一行。 //迭代法 class Solution { public:int findBottomLeftValue(TreeNode* root) {queue<TreeNod…

513.找树左下角的值

leetcode题目地址
题目链接/文章讲解/视频讲解

如果使用递归法,如何判断是最后一行:
其实就是深度最大的叶子节点一定是最后一行。

//迭代法
class Solution {
public:int findBottomLeftValue(TreeNode* root) {queue<TreeNode*> que;if (root != NULL) que.push(root);int result = 0;while (!que.empty()) {int size = que.size();for (int i = 0; i < size; i++) {TreeNode* node = que.front();que.pop();if (i == 0) result = node->val; // 记录最后一行第一个元素if (node->left) que.push(node->left);if (node->right) que.push(node->right);}}return result;}
};//递归法
class Solution {
public:int maxDepth = INT_MIN;int result;void traversal(TreeNode* root, int depth) {if (root->left == NULL && root->right == NULL) {if (depth > maxDepth) {maxDepth = depth;result = root->val;}return;}if (root->left) {traversal(root->left, depth + 1); // 隐藏着回溯,下一个遍历的时候深度加一,本层的不变}if (root->right) {traversal(root->right, depth + 1); // 隐藏着回溯, 下一个遍历的时候深度加一,本层的不变}return;}int findBottomLeftValue(TreeNode* root) {traversal(root, 0);return result;}
};

112. 路径总和

leetcodet题目链接
题目链接/文章讲解/视频讲解
因为终止条件是判断叶子节点,所以递归的过程中就不要让空节点进入递归了。
递归函数是有返回值的,如果递归函数返回true,说明找到了合适的路径,应该立刻返回。
左右子树递归时候的返回值要做判断,如果有一支返回true就可以提前返回结果,如果都没有返回true,返回false

class Solution {
private:bool traversal(TreeNode* cur, int count) {if (!cur->left && !cur->right && count == 0) return true; // 遇到叶子节点,并且计数为0if (!cur->left && !cur->right) return false; // 遇到叶子节点直接返回if (cur->left) { // 左count -= cur->left->val; // 递归,处理节点;if (traversal(cur->left, count)) return true;// 提前结束递归count += cur->left->val; // 回溯,撤销处理结果}if (cur->right) { // 右count -= cur->right->val; // 递归,处理节点;if (traversal(cur->right, count)) return true;// 提前结束递归count += cur->right->val; // 回溯,撤销处理结果}return false;}public:bool hasPathSum(TreeNode* root, int sum) {if (root == NULL) return false;return traversal(root, sum - root->val);}
};

106.从中序与后序遍历序列构造二叉树

106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树
leetcode题目链接
题目链接/文章讲解/视频讲解
说到一层一层切割,就应该想到了递归。
来看一下一共分几步:
第一步:如果数组大小为零的话,说明是空节点了。
第二步:如果不为空,那么取后序数组最后一个元素作为节点元素。
第三步:找到后序数组最后一个元素在中序数组的位置,作为切割点
第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)
第五步:切割后序数组,切成后序左数组和后序右数组
第六步:递归处理左区间和右区间

//框架代码
TreeNode* traversal (vector<int>& inorder, vector<int>& postorder) {// 第一步if (postorder.size() == 0) return NULL;// 第二步:后序遍历数组最后一个元素,就是当前的中间节点int rootValue = postorder[postorder.size() - 1];TreeNode* root = new TreeNode(rootValue);// 叶子节点if (postorder.size() == 1) return root;// 第三步:找切割点int delimiterIndex;for (delimiterIndex = 0; delimiterIndex < inorder.size(); delimiterIndex++) {if (inorder[delimiterIndex] == rootValue) break;}// 第四步:切割中序数组,得到 中序左数组和中序右数组// 第五步:切割后序数组,得到 后序左数组和后序右数组// 第六步root->left = traversal(中序左数组, 后序左数组);root->right = traversal(中序右数组, 后序右数组);return root;
}//完整代码
class Solution {
private:TreeNode* traversal (vector<int>& inorder, vector<int>& postorder) {if (postorder.size() == 0) return NULL;// 后序遍历数组最后一个元素,就是当前的中间节点int rootValue = postorder[postorder.size() - 1];TreeNode* root = new TreeNode(rootValue);// 叶子节点if (postorder.size() == 1) return root;// 找到中序遍历的切割点int delimiterIndex;for (delimiterIndex = 0; delimiterIndex < inorder.size(); delimiterIndex++) {if (inorder[delimiterIndex] == rootValue) break;}// 切割中序数组// 左闭右开区间:[0, delimiterIndex)vector<int> leftInorder(inorder.begin(), inorder.begin() + delimiterIndex);// [delimiterIndex + 1, end)vector<int> rightInorder(inorder.begin() + delimiterIndex + 1, inorder.end() );// postorder 舍弃末尾元素postorder.resize(postorder.size() - 1);// 切割后序数组// 依然左闭右开,注意这里使用了左中序数组大小作为切割点// [0, leftInorder.size)vector<int> leftPostorder(postorder.begin(), postorder.begin() + leftInorder.size());// [leftInorder.size(), end)vector<int> rightPostorder(postorder.begin() + leftInorder.size(), postorder.end());root->left = traversal(leftInorder, leftPostorder);root->right = traversal(rightInorder, rightPostorder);return root;}
public:TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {if (inorder.size() == 0 || postorder.size() == 0) return NULL;return traversal(inorder, postorder);}
};
http://www.ds6.com.cn/news/84417.html

相关文章:

  • 运营推广网站建设百度网页版入口链接
  • 云南昌旅游的网站建设宁德市疫情最新消息
  • 国外做鞋子的网站百度站长工具添加不了站点
  • 如何做免费网站推广广州百度快速排名优化
  • 泰州做网站流量大的推广平台有哪些
  • 花乡科技园区网站建设关键词智能优化排名
  • 什么网站可以做外链百度搜索引擎算法
  • php网站开发全程实例sem培训班
  • 绍兴网站快速排名优化国内seo服务商
  • 网站开发面试题百度推广的五大优势
  • 企业建设网站有哪些费用网络销售是什么工作内容
  • 武汉 酒店 网站制作苏州网站建设优化
  • 中国空间站设计在轨飞行几年免费建立个人网站申请
  • app商城需要手机网站吗免费制作个人网站
  • wordpress炫酷网页朝阳seo排名优化培训
  • 做推广网站那里好aso优化师主要是干嘛的
  • 新媒体运营师搜索引擎优化服务
  • 网站开发的工作流程semen
  • 建网站策划方案营销模式有几种
  • 商城网站有哪些功能网络域名怎么查
  • 义乌做站外推广的公司uc搜索引擎入口
  • 程序员和做网站那个好找工作优秀的软文
  • 旅游网站排行榜前十名官网建站模板网站
  • 如何开发微信公众号小程序网站优化推广seo公司
  • 自己做同城购物网站seo领导屋
  • 太原推广型网站制作搜索引擎优化时营销关键词
  • 网络公司网站开发企业网站优化服务公司
  • wordpress小工具制作哈尔滨优化网站公司
  • 贵州网站制作设计公司哪家好360指数官网
  • 国家高新技术企业难吗杭州百度快照优化排名