首页 > 其他分享 >二叉树遍历方法总结

二叉树遍历方法总结

时间:2022-08-21 17:36:03浏览次数:74  
标签:总结 遍历 复杂度 Morris 二叉树 节点 解法

二叉树基本概念

面试的时候提到的树, 大部分都是二叉树. 所谓二叉树是树的一种特殊结构, 在二叉树中每个节点最多只能有两个子节点, 在二叉树中最重要的操作莫过于遍历, 即按照某一顺序访问树中的所有节点.

树的遍历方式

通常树有如下几种遍历方式:

  1. 前序遍历
  2. 中序遍历
  3. 后续遍历

每种遍历都对应三种实现方式, 基于递归和迭代(循环)实现的时间复杂度为\(O(n)\), 空间复杂度为\(O(n)\), 基于Morris算法的时间复杂度为\(O(n)\), 空间复杂度为\(O(1)\). (应聘者应该对这三种遍历的9种实现方式都了如指掌)

Morris通用解法

Morris遍历使用二叉树节点中大量指向null的指针, 由Joseph Morris 于1979年发明, Morris的通用解法过程如下:

Morris的整体思路为: 以某个跟节点出发, 找到它的左子树的最右侧节点之后与这个跟节点进行连接. 由右图, 建立连接之后, cur这个指针可以完整的聪一个节点顺着下一个节点遍历, 将整颗树遍历完毕, 直到7这个节点右侧没有指向.

标签:总结,遍历,复杂度,Morris,二叉树,节点,解法
From: https://www.cnblogs.com/mujuna/p/16610306.html

相关文章

  • VIM编辑器—指令模式命令总结
    一、简介在一般模式当中,输入『:/?』3个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中,可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符......
  • 每周总结(22/8/20)
    zookeeper=文件系统+监听通知机制。1、文件系统Zookeeper维护一个类似文件系统的数据结构:每个子目录项如NameService都被称作为znode(目录节点),和文件系统一样,我们......
  • VIM编辑器—普通模式命令总结
    一、简介以vi打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档......
  • VIM编辑器—命令模式命令总结
    一、简介在一般模式中可以进行删除、复制、粘贴等的动作,但是却无法编辑文件内容的!要等到你按下『i,I,o,O,a,A』等任何一个字母之后才会进入编辑模式。注意了!通常在L......
  • Mongodb使用总结
    Mongodb使用总结基于内存操作,便于与网站交互数据库-集合-文档(存储多种数据类型),我们的操作都是基于单文档进行操作,并且通过冗余字段进行操作嵌入式数组文档减少了对昂贵......
  • HTTPS解加密过程总结
    HTTPS用于解决HTTP不安全的问题。解决办法是加了一层SSL的建立过程,建立过程大概如下。1.客户端向服务器发起访问。2.服务器收到后,向CA机构发送公钥,CA机构向服务器颁发CA......
  • 数据结构3-二叉树
    二叉树概念  二叉树分类  二叉树遍历方式 ......
  • 【博学谷学习记录】超强总结,用心分享。 Spring核心容器
    SpringFramework系统架构一.核心容器1.概念:代码书写现状:耦合度偏高解决方法:使用对象时,在程序中不要主动使用n......
  • 新人使用Gorm的踩坑总结
    在使用Update更新数据时一定要将where条件放在update前面,否则where不会生效,将更新所有数据正确的写法//条件更新db.Model(&User{}).Where("id=?",ID).Update("name",......
  • Guava常用工具类总结
    Guava常用工具类总结-"我想写得更优雅,可是没人告诉我怎么写得更优雅"-"Null的含糊语义让人很不舒服。Null很少可以明确地表示某种语义,例如,Map.get(key)返回Null时,可能表......