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

建站系统主要包括什么文案代写平台

建站系统主要包括什么,文案代写平台,扬州企业做网站,做影视网站需要多少钱102. 二叉树的层序遍历 层序遍历,就是一层一层地遍历二叉树,最常见的就是从上到下,从左到右来遍历,遍历的方法依然有两种,第一种是借助队列,第二种则是递归,都算是很简单、很容易理解的方法&am…

102. 二叉树的层序遍历

层序遍历,就是一层一层地遍历二叉树,最常见的就是从上到下,从左到右来遍历,遍历的方法依然有两种,第一种是借助队列,第二种则是递归,都算是很简单、很容易理解的方法,下面来分别介绍一下。

队列法

使用队列法讲究的就是一个简单粗暴,顺着做下去就行了。

首先要定义一个队列,这个队列的元素都得是二叉树结点,因为它是用来暂存二叉树的一层的。先是把根结点入队,当然如果连根结点都没有的话,就直接返回空数组了(要返回的是保存各层元素的二维数组,用vector容器实现);

接着就用vector定义一个保存遍历下来的元素的二维数组,作为result来最终返回答案;

现在就开始遍历了,我们用的是while循环,当队列为空时停止,在一轮循环中,队列存的是这层要遍历的结点,所以先定义一个size来保存未经遍历的层结点数,因为下面我们在遍历一个结点后就要把它出队,以便于存入下一层的结点;

遍历中,使用一个一维数组保存元素值,然后就把这个结点的左右子结点依次入队,因为是队列,就不用像栈那样反着来。每层遍历结束后,就把遍历得到的元素数组push进result二维数组里。

具体代码如下:

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {queue<TreeNode*> que;vector<vector<int>> result;if (root != NULL) que.push(root);while (!que.empty()) {int size = que.size();vector<int> vec;for (int i = 0; i < size; i++) {TreeNode* node = que.front();que.pop();vec.push_back(node->val);if (node->left) que.push(node->left);if (node->right) que.push(node->right);}result.push_back(vec);}return result;}
};

递归法

这个不用掌握,了解一下即可。但是下面的两道还是优先使用递归来做。

class Solution {
public:void order(TreeNode* cur, vector<vector<int>>& result, int depth) {if (cur == nullptr) return;if (result.size() == depth) result.push_back(vector<int>());result[depth].push_back(cur->val);order(cur->left, result,depth + 1);order(cur->right, result, depth + 1);}vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> result;int depth = 0;order(root, result, depth);return result;}
};

226. 翻转二叉树

题目

思路

看到翻转,你可能会先想到一层一层地将结点翻转,但其实不用这么复杂,稍微观察一下就知道,只需要翻转每个结点的两个子结点即可,所以这里就可以用递归遍历的方法来做,先对调两个子结点,再遍历子结点,最后返回根结点即可。

盲区

随想录刷到这里才知道,swap函数还可以用来对调两个二叉树结点,长知识了:

swap(root->left, root->right);

代码

class Solution {
public:TreeNode* invertTree(TreeNode* root) {if (root == NULL) return root;swap(root->left, root->right);invertTree(root->left);invertTree(root->right);return root;}
};

101. 对称二叉树

题目

思路

还是用递归来做,每次递归判断对称的两个结点,若其中一个为空则返回false,两个都为空则返回true,接着都是不为空的,此时就判断两个结点值是否相等,不相等就返回false,否则就接着往下递归,先递归判断左边的左孩子和右边的右孩子,再递归判断左边的右孩子和右边的左孩子,这样就是对称位置的结点来判断是否相等了,将判断结果分别赋值给一个布尔变量,两个布尔变量都为true时就返回true。

代码

class Solution {
public:bool compare(TreeNode* left, TreeNode* right) {if (left == NULL && right != NULL) return false;else if (left != NULL && right == NULL) return false;else if (left == NULL && right == NULL) return true;else if (left->val != right->val) return false;bool outside = compare(left->left, right->right);bool inside = compare(left->right, right->left);bool isSame = outside && inside;return isSame;}bool isSymmetric(TreeNode* root) {if (root == NULL) return true;return compare(root->left, root->right);}
};

http://www.wooajung.com/news/27176.html

相关文章:

  • wordpress百家号主题重庆seo网站收录优化
  • 移动端web网站模板seo整站优化更能准确获得客户
  • 商标设计网站有哪些网站搭建教程
  • 做印章网站网站营销网
  • 专业俄文网站建设抓关键词的方法10条
  • 天津智能网站建设找哪家宁波seo推荐优化
  • 手工活接单在家做有正规网站吗智慧软文发稿平台
  • 什么网站可以做特价活动婚恋网站排名
  • 已备案个人网站做淘宝客百度精准营销获客平台
  • 做翻译网站 知乎东莞搜索优化
  • 宝鸡市公路建设局网站优化方案官网
  • 临沂手机网站建设中国企业网络营销现状
  • wordpress 首页显示产品广州推动优化防控措施落地
  • 建设工程168成都关键词优化排名
  • 专门做机器人大战的网站叫什么网页设计实训报告
  • 有哪些网站做国外生意的石家庄seo推广
  • 集客营销软件官方网站西安seo网站排名
  • 用dede做网站去掉版权株洲seo
  • 平面设计图100张seo站长之家
  • 做电商的批发网站站长工具权重
  • 网站建设 风险360广告投放平台
  • 网站是如何做的情感营销案例
  • 积分购物型网站3seo
  • wordpress avada汉化北京搜索引擎优化主管
  • orchard可以做哪些网站江北seo
  • wordpress home_url()seo学习网站
  • 招标网站开发文档泉州百度seo公司
  • 小程序制作问卷调查seo网站推广收费
  • 国外服务器做网站新手做网络销售难吗
  • 新疆建设厅进疆备案官方网站广西网络推广公司