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

leetcode_深度搜索和广度搜索 94. 二叉树的中序遍历

94. 二叉树的中序遍历

  • 给定一个二叉树的根节点root ,返回它的中序遍历 。
  • 中序遍历顺序为: 左 ——根——右

递归遍历

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def inorderTraversal(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: List[int]
        """
        result = [] 
        
        def inorder(node):
            if node is None:
                return []
            inorder(node.left)
            result.append(node.val)
            inorder(node.right)
        
        inorder(root)
        return result
  • 时间复杂度: O(n)
  • 空间复杂度: O(log n) ~ O(n) , 其中O(log n)为完全二叉树的情况; 或O(h), h是树的高度

非递归遍历(栈)

class Solution(object):
    def inorderTraversal(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: List[int]
        """
        result, stack = [], []
        cur = root
        
        while crr or stack:
            while cur:
                stack.append(cur)
                cur = cur.left  # 遍历左子树
            
            cur = stack.pop()
            result.append(cur.val)  # 访问当前节点
            
            cur = cur.right  # 遍历右子树
        
        return result
  • 时间复杂度: O(n)
  • 空间复杂度: O(h), h是树的高度

http://www.kler.cn/a/538574.html

相关文章:

  • 深入探究 Go 语言中的 Fx 框架:依赖注入的强大工具
  • HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)
  • Stability AI 联合 UIUC 提出单视图 3D 重建方法SPAR3D,可0.7秒完成重建并支持交互式用户编辑。
  • 关于32位和64位程序的传参方法及虚拟机调试工具总结
  • Redis03 - 高可用
  • 2025年02月08日Github流行趋势
  • Ubuntu 作为 FTP 服务器,Windows 作为 FTP 客户端
  • 元宇宙中的隐私与数据保护:Facebook 的挑战与机遇
  • 从零开始人工智能Matlab案例-粒子群优化
  • 武汉火影数字|VR虚拟现实:内容制作与互动科技的奇妙碰撞
  • 人工智能A*算法-爬坡路段增加移动代价,在狭窄街道考虑车辆的转弯半径
  • CF 69A.Young Physicist(Java实现)
  • Java高频面试之SE-19
  • 花旗银行java面试_花旗金融—面经(已offer)
  • docker安装 mongodb
  • 医疗任务VLMs安全漏洞剖析与编程防御策略
  • camera系统之cameraprovider
  • Easing Wizard - 免费的 CSS 缓动曲线在线编辑器,前端开发做动画效果的必备工具
  • CSS 相关知识
  • 【STM32】AHT20温湿度模块
  • Ubuntu 多版本 gcc 配置常用命令备忘
  • 【Rust自学】20.4. 结语:Rust学习一阶段完成+附录
  • 调用 useState 之后发生了啥(⊙_⊙)?
  • windows蓝牙驱动开发-蓝牙无线电重置和恢复
  • cpp之模板
  • 安装和使用 Ollama(实验环境windows)