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

手机网站开发标准新手运营从哪开始学

手机网站开发标准,新手运营从哪开始学,本地做网站,如何在搜索引擎做网站目录 题目地址: 题目: 解题方法: 解题分析: 解题思路: 代码实现: 注: 代码实现(递归): 代码实现(迭代): 题目地址&#xf…

目录

题目地址:

题目:

解题方法:

解题分析:

解题思路:

代码实现:

注:

代码实现(递归):

代码实现(迭代):


题目地址:

94. 二叉树的中序遍历 - 力扣(LeetCode)

难度:简单

今天刷二叉树的中序遍历,大家有兴趣可以点上看看题目要求,试着做一下

题目:

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

我们直接看题解吧:

解题方法:

方法1,递归

方法2,迭代

方法3,Morris(空间复杂度(1))

解题分析:

中序遍历顺序:左子树->根节点->右子树(即左根右)

递归方法通俗易懂,但效率低,迭代方法,效率虽高,但不易理解,

因此这里着重讲一下Morris方法。

解题思路:

设当前遍历节点为x:

1、若x无左孩子,将x的值放入答案数组,接着访问x右孩子,即x=x.right。

2、若x有左孩子,则找到该左子树中最右的节点(即左子树中序遍历的最后一个节点)记为predecessor。

    · 若predecessor的右孩子为空,则将右孩子指向x,接着访问x左孩子即x=x.left

     ·若predecessor的右孩子不为空,则将右孩子指向x,此时说明已遍历完x的左子树,则将predecessor的右孩子置空,将x的值加入答案数组,然后访问x的右孩子即x=x.right

3、重复上述操作,直至访问完整棵树。

 具体可结合题解-->  :94. 二叉树的中序遍历 题解

代码实现:

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<Integer>(); //创建集合存储节点的值TreeNode predecessor = null;   //创建predxessor节点,并置空while (root != null) {if (root.left != null) {//左孩子不为空// predecessor 节点就是当前 root 节点向左走一步,然后一直向右走至无法走为止predecessor = root.left;while (predecessor.right != null && predecessor.right != root) {predecessor = predecessor.right;}// 让 predecessor 的右指针指向 root,继续遍历左子树if (predecessor.right == null) {predecessor.right = root;root = root.left;}// 说明左子树已经访问完了,我们需要断开链接else {res.add(root.val);predecessor.right = null;root = root.right;}}// 如果没有左孩子,则直接访问右孩子else {res.add(root.val);root = root.right;}}return res;}
}
注:

其实整个过程我们就多做一步:假设当前遍历到的节点为 x,将 x 的左子树中最右边的节点的右孩子指向 x,这样在左子树遍历完成后我们通过这个指向走回了 x,且能通过这个指向知晓我们已经遍历完成了左子树,而不用再通过栈来维护,省去了栈的空间复杂度。

代码实现(递归):

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<Integer>();inorder(root, res);return res;}public void inorder(TreeNode root, List<Integer> res) {if (root == null) {return;}inorder(root.left, res);res.add(root.val);inorder(root.right, res);}
}

代码实现(迭代):

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<Integer>();Deque<TreeNode> stk = new LinkedList<TreeNode>();while (root != null || !stk.isEmpty()) {while (root != null) {stk.push(root);root = root.left;}root = stk.pop();res.add(root.val);root = root.right;}return res;}
}

http://www.yidumall.com/news/108912.html

相关文章:

  • 英文网站建设解决方案推广普通话奋进新征程
  • 文化传播集团网站建设软文营销文案
  • 做 商城 网站 费用互动营销是什么意思
  • 专业做毕业设计网站设计西安网站制作公司
  • 网站建设宣传册内容文档成品网站货源1688在线
  • 宫免费网站百度大全免费下载
  • wordpress设置文章字体颜色免费seo推广公司
  • 普陀区网站建设公司哪家好建立一个网站的费用
  • php建站系统源码友情链接查询工具
  • 漳州市建设局网站高端网站建设制作
  • 做网站的劣势网站推广排名优化
  • 网站整体设计营销软文范例500
  • 美国生物等效性如果做的网站seo推广排名重要吗
  • 视频运营管理网站微信crm系统软件
  • 网站建设业务范围天津优化加盟
  • 做雨棚的网站宣传方式
  • 郑州网站优化效果情感营销案例
  • 建设网站定制apple日本网站
  • 网站备案需要费用吗优化网站标题
  • 常州网站建设案例新的数据新闻
  • 网站做网站网络舆情分析报告模板
  • 建设婚介网站北京seo优化公司
  • 网站内容建设与管理网站制作代码
  • 网站横幅怎么做如何推广网店
  • 福建网站建设公司网站改版
  • 公司网站改版多少钱专业网络推广
  • 深圳市建设局科技处网站搜索引擎营销的特点是什么
  • 不愁销路的小型加工厂项目年入百万贵州快速整站优化
  • 微信网站响应式网站东莞网站开发公司
  • 网站建设应该注意哪些seo交流论坛