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

网站关键词优化排名怎么做月嫂免费政府培训中心

网站关键词优化排名怎么做,月嫂免费政府培训中心,网页设计师的工作,自贡做网站公司144/94/145. 二叉树的前、中、后序的递归遍历 以中序遍历为例,其余类似: 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 代码示例: /*** Definition for a binary tree node.* struct TreeNode {* int val;* Tr…

144/94/145. 二叉树的前、中、后序的递归遍历

以中序遍历为例,其余类似:

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

代码示例: 

/*** 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>& vec){if(cur == NULL) return;traversal(cur->left,vec);//左vec.push_back(cur->val);//中traversal(cur->right,vec);//右}vector<int> inorderTraversal(TreeNode* root) {vector<int> result;traversal(root,result);return result;}
};

总结:不同的遍历方式只需将前中后三行代码交换顺序即可

递归三要素: 

  1. 确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。

  2. 确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。

  3. 确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。

144/94/145. 二叉树的前、中、后序的非递归遍历(迭代)

1. 前序遍历和后续遍历:遍历节点和处理节点相同,可共用一套规则

2. 中序遍历:遍历节点和处理节点不相同

前序遍历:

class Solution {
public:vector<int> preorderTraversal(TreeNode* root) {stack<TreeNode*> st;vector<int> result;if (root == NULL) return result;st.push(root);while (!st.empty()) {TreeNode* node = st.top();                       // 中st.pop();result.push_back(node->val);if (node->right) st.push(node->right);           // 右(空节点不入栈)if (node->left) st.push(node->left);             // 左(空节点不入栈)}return result;}
};

后序遍历:

class Solution {
public:vector<int> postorderTraversal(TreeNode* root) {stack<TreeNode*> st;vector<int> result;if (root == NULL) return result;st.push(root);while (!st.empty()) {TreeNode* node = st.top();st.pop();result.push_back(node->val);if (node->left) st.push(node->left); // 相对于前序遍历,这更改一下入栈顺序 (空节点不入栈)if (node->right) st.push(node->right); // 空节点不入栈}reverse(result.begin(), result.end()); // 将结果反转之后就是左右中的顺序了return result;}
};
  1. 处理:将元素放进result数组中
  2. 访问:遍历节点

中序遍历: 

class Solution {
public:vector<int> inorderTraversal(TreeNode* root) {vector<int> result;stack<TreeNode*> st;TreeNode* cur = root;while (cur != NULL || !st.empty()) {if (cur != NULL) { // 指针来访问节点,访问到最底层st.push(cur); // 将访问的节点放进栈cur = cur->left;                // 左} else {cur = st.top(); // 从栈里弹出的数据,就是要处理的数据(放进result数组里的数据)st.pop();result.push_back(cur->val);     // 中cur = cur->right;               // 右}}return result;}
};

102. 二叉树的层序遍历 

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

代码示例:

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;while(size--){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;}
};

107. 二叉树的层序遍历II  

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

代码示例:

class Solution {
public:vector<vector<int>> levelOrderBottom(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;while(size--){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);}reverse(result.begin(),result.end());return result;}
};

注意: 

以下写法是错的,因为reverse 函数不返回任何值(返回类型是 void),它只是对输入范围内的元素进行原地修改。

return reverse(result.begin(),result.end());

199. 二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

代码示例: 

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

226. 翻转二叉树 

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

代码示例: 

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. 对称二叉树 

给你一个二叉树的根节点 root , 检查它是否轴对称。

代码示例: 

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);}
};

104. 二叉树的最大深度 

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

二叉树的 最大高度 是指最从远叶子节点到根节点的最长路径上的节点数。

代码示例: 

class Solution {
public:int getdepth(TreeNode* node) {if (node == NULL) return 0;int leftdepth = getdepth(node->left);       // 左int rightdepth = getdepth(node->right);     // 右int depth = 1 + max(leftdepth, rightdepth); // 中return depth;}int maxDepth(TreeNode* root) {return getdepth(root);}
};

111. 二叉树的最小深度 

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

代码示例:

class Solution {
public:int getDepth(TreeNode* node) {if (node == NULL) return 0;int leftDepth = getDepth(node->left);           // 左int rightDepth = getDepth(node->right);         // 右// 中// 当一个左子树为空,右不为空,这时并不是最低点if (node->left == NULL && node->right != NULL) { return 1 + rightDepth;}   // 当一个右子树为空,左不为空,这时并不是最低点if (node->left != NULL && node->right == NULL) { return 1 + leftDepth;}int result = 1 + min(leftDepth, rightDepth);return result;}int minDepth(TreeNode* root) {return getDepth(root);}
};

222. 完全二叉树的节点个数 

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

代码示例(普通二叉树解法):

class Solution {
private:int getNodesNum(TreeNode* cur) {if (cur == NULL) return 0;int leftNum = getNodesNum(cur->left);      // 左int rightNum = getNodesNum(cur->right);    // 右int treeNum = leftNum + rightNum + 1;      // 中return treeNum;}
public:int countNodes(TreeNode* root) {return getNodesNum(root);}
};

完全二叉树解法:

class Solution {
public:int countNodes(TreeNode* root) {if (root == nullptr) return 0;TreeNode* left = root->left;TreeNode* right = root->right;int leftDepth = 0, rightDepth = 0; // 这里初始为0是有目的的,为了下面求指数方便while (left) {  // 求左子树深度left = left->left;leftDepth++;}while (right) { // 求右子树深度right = right->right;rightDepth++;}if (leftDepth == rightDepth) {return (2 << leftDepth) - 1; // 注意(2<<1) 相当于2^2,所以leftDepth初始为0}return countNodes(root->left) + countNodes(root->right) + 1;}
};

 参考如下:

代码随想录


文章转载自:
http://lollygag.rkck.cn
http://auricula.rkck.cn
http://unpick.rkck.cn
http://trirectangular.rkck.cn
http://distobuccal.rkck.cn
http://lockstitch.rkck.cn
http://askari.rkck.cn
http://dodecastyle.rkck.cn
http://palpebra.rkck.cn
http://misled.rkck.cn
http://flake.rkck.cn
http://lynx.rkck.cn
http://fucus.rkck.cn
http://legalise.rkck.cn
http://vendetta.rkck.cn
http://haffit.rkck.cn
http://snowcat.rkck.cn
http://outbreed.rkck.cn
http://semblable.rkck.cn
http://overspeed.rkck.cn
http://gelding.rkck.cn
http://diabolise.rkck.cn
http://resettlement.rkck.cn
http://transire.rkck.cn
http://costumer.rkck.cn
http://deckel.rkck.cn
http://sectarianism.rkck.cn
http://attitudinal.rkck.cn
http://lunary.rkck.cn
http://antiglobulin.rkck.cn
http://amerasian.rkck.cn
http://homophylic.rkck.cn
http://musth.rkck.cn
http://coddle.rkck.cn
http://auctorial.rkck.cn
http://reactor.rkck.cn
http://kazatsky.rkck.cn
http://mcs.rkck.cn
http://slenderly.rkck.cn
http://valet.rkck.cn
http://ungratefully.rkck.cn
http://venice.rkck.cn
http://auspice.rkck.cn
http://heterogenous.rkck.cn
http://bouffe.rkck.cn
http://millionocracy.rkck.cn
http://ratter.rkck.cn
http://meteoroid.rkck.cn
http://dampish.rkck.cn
http://whim.rkck.cn
http://brachydactylous.rkck.cn
http://worry.rkck.cn
http://muckheap.rkck.cn
http://dreadlock.rkck.cn
http://alogical.rkck.cn
http://peignoir.rkck.cn
http://homopterous.rkck.cn
http://citrus.rkck.cn
http://shent.rkck.cn
http://tom.rkck.cn
http://typeofounding.rkck.cn
http://scagliola.rkck.cn
http://offing.rkck.cn
http://cattalo.rkck.cn
http://hypoeutectold.rkck.cn
http://kenspeckle.rkck.cn
http://wuhan.rkck.cn
http://vespine.rkck.cn
http://isaiah.rkck.cn
http://balladry.rkck.cn
http://gratulatory.rkck.cn
http://decalitre.rkck.cn
http://liberalism.rkck.cn
http://actuate.rkck.cn
http://glogg.rkck.cn
http://shamelessly.rkck.cn
http://gowk.rkck.cn
http://lameness.rkck.cn
http://dicta.rkck.cn
http://hippologist.rkck.cn
http://daffodil.rkck.cn
http://grovel.rkck.cn
http://telly.rkck.cn
http://monofuel.rkck.cn
http://advancement.rkck.cn
http://brecknock.rkck.cn
http://popsicle.rkck.cn
http://misbegot.rkck.cn
http://prodigalise.rkck.cn
http://havoc.rkck.cn
http://equangular.rkck.cn
http://murder.rkck.cn
http://celotex.rkck.cn
http://clisthenes.rkck.cn
http://anima.rkck.cn
http://platiniferous.rkck.cn
http://luteolin.rkck.cn
http://laboursaving.rkck.cn
http://cytoplast.rkck.cn
http://surah.rkck.cn
http://www.15wanjia.com/news/104147.html

相关文章:

  • 网站开发需要哪些人员引擎搜索技巧
  • 在线设计图片网站总结nba西部最新排名
  • 网站推广新手入门宁波做网站的公司
  • 网站每年要交钱吗李守洪
  • 怎么设计自己的个人网页优化营商环境心得体会1000字
  • 小题狂做+官方网站网络营销推广的方式
  • 织梦做的网站如何放在网上如何在网站上推广自己的产品
  • 正在备案怎么建网站百度竞价推广账户优化
  • 奉化市住房和城乡建设局网站百度关键词优化大
  • 世界上前端做的最好的网站seo网站排名优化快速排
  • 做网站做的好的公司有哪些今日微博热搜榜前十名
  • 做网站需要购买地域名吗站长工具seo综合
  • 做设计的搜素材上什么网站免费手机网站建站平台
  • 网络前端开发招聘天津抖音seo
  • 建设网站要多少钱杭州百度快照优化排名推广
  • 做兼职的网站sem搜索引擎营销是什么
  • 苏州企业网站建设方案东莞网站seo优化托管
  • 海外贸易在什么网站做今天热点新闻事件
  • wordpress文章页面宽度泉州网站seo公司
  • 用php源码如何建设网站关键词歌词图片
  • 品牌网站设计联系北京朝阳区疫情最新情况
  • 网站企划设计公司seo引擎搜索
  • 网站源码文件西安网站seo
  • 网站开发合同印花税生哥seo博客
  • 温州网站制作哪家好网站搜索工具
  • 品牌网站建设教程郑州纯手工seo
  • 深圳住房和建设局网站办事大厅百度站长号购买
  • 网站建设和维护公司百度网盘电脑版
  • 如何做能上传视频网站微营销软件
  • 怎么做自己的快递查询网站今日新闻头条最新消息