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

江苏省建设执业网站网页传奇开服表

江苏省建设执业网站,网页传奇开服表,网站开发算是软件开发,wordpress模板汉化递归算法的三个要素 确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。 确定终止条件: 写完了递归算法, 运…

递归算法的三个要素

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

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

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

(1) 找出重复的子问题。

这个很好找,前序遍历的顺序是:根、左子树、右子树。

对于左子树或者右子树来说,也是同样的遍历顺序。

所以这个重复的子问题就出来了,先取根节点,再遍历左子树,最后遍历右子树

(2) 确定终止条件。

对于二叉树的遍历来说,想终止,即没东西遍历了,没东西遍历自然就停下来了。

那就是当前的节点是空的,既然是空的那就没啥好遍历。

/*** 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;vec.push_back(cur->val);Traversal(cur->left, vec);Traversal(cur->right, vec);}vector<int> preorderTraversal(TreeNode* root) {vector<int> result;Traversal(root, result);return result;}
};
  1. 构造函数

    • TreeNode():默认构造函数,初始化节点值为 0,左右子节点为 nullptr

    • TreeNode(int x):初始化节点值为 x,左右子节点为 nullptr

    • TreeNode(int x, TreeNode* left, TreeNode* right):初始化节点值为 x,并指定左右子节点。

  • 你在 while (cur != NULL) 中递归调用了 Traversal 函数。

  • 这个 while 循环会导致无限递归,因为 cur 的值在递归调用中不会改变,while 循环的条件始终为真(除非 cur 一开始就是 nullptr)。

  • 正确的递归实现应该用 if 判断,而不是 while 循环。

迭代法:用栈,不断地将旧的变量值,递推计算新的变量值

  • 初始化维护一个栈,将根节点入栈。

  • 当栈不为空时

    • 弹出栈顶元素 node,将节点值加入结果数组中。

    • 若 node 的右子树不为空,右子树入栈。

    • 若 node 的左子树不为空,左子树入栈。

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 != NULL) st.push(node->right);if(node->left != NULL) st.push(node->left);}return result;}
};

TreeNode* node 的作用是 临时存储当前正在处理的二叉树节点。它是栈顶节点的副本,用于访问当前节点的值以及将其子节点压入栈中。


文章转载自:

http://IBmUpTxR.rnpnn.cn
http://sI0Yn9dl.rnpnn.cn
http://E09nc0I1.rnpnn.cn
http://kJPns8dJ.rnpnn.cn
http://7hc1B8n1.rnpnn.cn
http://Kz9ZDrnG.rnpnn.cn
http://dOlwBxBm.rnpnn.cn
http://tWplNTAP.rnpnn.cn
http://i48dSfsW.rnpnn.cn
http://YcsYnz4J.rnpnn.cn
http://Q5KCE8UO.rnpnn.cn
http://MJvZdtEt.rnpnn.cn
http://oiZIuHRa.rnpnn.cn
http://K2dJET0h.rnpnn.cn
http://OzL15DPE.rnpnn.cn
http://EVvui33U.rnpnn.cn
http://2JGM327H.rnpnn.cn
http://tIKXm0CU.rnpnn.cn
http://ohGzmeBM.rnpnn.cn
http://SIk50THC.rnpnn.cn
http://YaEevtgO.rnpnn.cn
http://jSunWEAU.rnpnn.cn
http://UZuLFxFj.rnpnn.cn
http://EfcaJrVT.rnpnn.cn
http://fgnUJgqw.rnpnn.cn
http://whusgCTm.rnpnn.cn
http://UpWwg7Di.rnpnn.cn
http://sw4c5Sld.rnpnn.cn
http://lEqlwPuz.rnpnn.cn
http://Xem6eHAB.rnpnn.cn
http://www.dtcms.com/wzjs/746772.html

相关文章:

  • 平台和网站有什么区别北京网站优化招聘
  • 眉山建设局网站在线简历模板
  • 网站开发对cpu要求高吗上海500强企业排名
  • 做网站带来好处一键生成logo免费在线网页
  • 商丘网站建设制作网站首页布局自适应
  • 招聘网站做招聘顾问用dedecms做的网站 脚本是什么
  • 装修公司的网站怎么做大兴区企业网站建设
  • 个人网站开发要多久怎么样自己做企业网站
  • 网站开发用php好吗哈尔滨干肠制作
  • ps做网站原形哪个平台做推广效果好
  • 利为汇wordpress谷歌seo技巧
  • 万网网站备案管理swiper手机网站案例
  • wordpress和站点什么是企业形象设计
  • 深圳龙岗建网站服装网站页面设计
  • 虚拟主机建设网站绑定域名dw做网站学习解析
  • 网站建设开题报告中的问题销售平台的重要性
  • 游戏网站 模板编程培训心得
  • 网站的系统建设方式有哪些方面如何做qq钓鱼网站
  • 网站建设开发设计营销公司厦门龙华品牌网站制作
  • asp静态网站wordpress 焦点图
  • 北京网站开发月薪手机版网站建设
  • 网站建设和网络维护帮你做决定的网站
  • led高端网站建设网站上怎么做弹目提醒
  • 安顺网站设计wordpress怎么搬站
  • 建站服务是什么学网站建设多少学费
  • 淘宝客推广平台湖南纯手工seo电话
  • 网站优化的意义沧州微酷网络科技有限公司
  • 目前网站开发语言企业建站系统下载
  • 介绍做燕窝的网站网站正在建设中 源码下载
  • 平面设计网站推荐网站建设新闻中心