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

网站做管理后台需要知道什么建设教育网站的国内外研究现状

网站做管理后台需要知道什么,建设教育网站的国内外研究现状,视频直播类网站开发难度,网站建设广州公司题目描述 给定二叉树的根节点 root ,返回所有左叶子之和。 题目分析 其实这题无论是迭代法还是递归法,最重要的是要明确判断左叶子的条件:当前节点有左孩子,且这个左孩子没有它的左孩子和右孩子。 迭代法 感觉只要二叉树相关…

题目描述

给定二叉树的根节点 root ,返回所有左叶子之和。

题目分析

其实这题无论是迭代法还是递归法,最重要的是要明确判断左叶子的条件当前节点有左孩子,且这个左孩子没有它的左孩子和右孩子

迭代法

感觉只要二叉树相关的题递归想不出来,直接暴力上层序遍历就能解出来。迭代法真没什么难度,就是把内层while循环中处理当前节点的条件换成上面的逻辑就行,也即:

if(node->left && node->left->left==NULL && node->left->right == NULL) sum += node->left->val;

整体cpp代码:

/*** 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 sumOfLeftLeaves(TreeNode* root) {// 迭代法(层序遍历)queue<TreeNode*> q;int sum = 0;if(root!=NULL) q.push(root);while(!q.empty()){int size = q.size();while(size--){TreeNode* node = q.front();q.pop();if(node->left && node->left->left==NULL && node->left->right == NULL) sum += node->left->val;if(node->left) q.push(node->left);if(node->right) q.push(node->right);}}return sum;}
};

递归法

这里我和代码随想录中处理的不太一样,但是思路是一样的。我这里用了传出参数vector<int>& sum,所以我用什么遍历顺序都是对的。但是代码随想录中是用了int返回值,所以是要从下层传结果送至上层汇聚,那么这就必须要用后序遍历(左右中)。

我的cpp整体递归代码

注意:这里中左右的顺序可以任意变换,已经试过了,都能AC。

/*** 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:void traversal(TreeNode* cur, vector<int>& sum){// 递归终止条件if(cur == NULL) return;if(cur->left) traversal(cur->left, sum);if(cur->right) traversal(cur->right, sum);// 单层递归逻辑:当该节点只有一个左孩子(左叶子)if(cur->left!=NULL && cur->left->left==NULL && cur->left->right==NULL){sum.push_back(cur->left->val);}}int sumOfLeftLeaves(TreeNode* root) {// 递归法vector<int> sum;traversal(root, sum);return accumulate(sum.begin(), sum.end(), 0);}
};

代码随想录的cpp整体递归代码

class Solution {
public:int sumOfLeftLeaves(TreeNode* root) {if (root == NULL) return 0;if (root->left == NULL && root->right== NULL) return 0;int leftValue = sumOfLeftLeaves(root->left);    // 左if (root->left && !root->left->left && !root->left->right) { // 左子树就是一个左叶子的情况leftValue = root->left->val;}int rightValue = sumOfLeftLeaves(root->right);  // 右int sum = leftValue + rightValue;               // 中return sum;}
};
http://www.yayakq.cn/news/326548/

相关文章:

  • 杭州网站推广排名怎样做一个简单的网站
  • 北京 工业网站建设公司排名名师工作室建设名师网站
  • 国外开源网站系统深圳市外贸网站建设多少钱
  • 网站营销方案下载一个百度时事新闻
  • 网站改版需求分析网站名称 规则
  • 国外中文网站排行榜单外贸局合并到哪个局
  • 美容产品网站建设多少钱wordpress多媒体设置
  • 网站产品详情页怎么做模具外发加工订单网
  • 网站开发主题荆门网站建设服务
  • 品牌设计网站公司广东网络营销是什么
  • 品牌型网站有哪些用照片做模板下载网站
  • 营销型网站是什么wordpress 推荐主题
  • 免费看电视剧的网站2021中国医药集团有限公司
  • 花木网站源码智能锁东莞网站建设
  • 公司网站抄袭成都建模培训
  • 网站开发与维护是学什么女生做seo网站推广
  • 临沂网站推广网站建设文化代理商
  • 公司网站设计制作开发方案网站过度优化
  • 手机网站用户体验wordpress添加留言板
  • wordpress实名南宁百度推广seo
  • 网站可以更换域名吗大学英文网站建设举措
  • 宝山顺德网站建设建一个大型网站需要多少钱
  • 北京网站设计济南兴田德润评价网站专题框架怎么做
  • 怎样python做网站合肥门户网站建设
  • wordpress 音乐页面东莞长安网站优化
  • 东莞网站建设要注意什么电器网站建设免费咨询
  • 滁州网站建设价格网页模板怎么用
  • 鄂州官方网站重庆企业品牌网站建设
  • 网站推广策略做网站招标
  • 网站平台建设方案书京东官网首页入口