当前位置: 代码迷 >> 综合 >> LeetCode94:二叉树的中序遍历(递归+非递归)
  详细解决方案

LeetCode94:二叉树的中序遍历(递归+非递归)

热度:98   发布时间:2024-02-21 12:06:39.0

目录

一、题目

二、示例

三、思路

四、代码


一、题目

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

二、示例

示例:

输入: [1,null,2,3]1\2/3输出: [1,3,2]

三、思路

1、递归。后序遍历:左-->根-->右。

2、非递归,栈的思想,先进后出。

四、代码

1、

# Definition for a binary tree node.
class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = Noneclass Solution: def inorderTraversal(self, root: TreeNode):if root is None:return []return self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right)if __name__ == '__main__':root = TreeNode(1)root.left = Noneroot.right = TreeNode(2)root.right.left = TreeNode(3)s = Solution()ans = s.inorderTraversal(root)print(ans)

2、

# Definition for a binary tree node.
class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = Noneclass Solution: def inorderTraversal(self, root: TreeNode):res = []if root is None:return resstack = []while stack or root:if root is not None:stack.append(root)root = root.leftelse:root = stack.pop()res.append(root.val)root = root.rightreturn resif __name__ == '__main__':root = TreeNode(1)root.left = Noneroot.right = TreeNode(2)root.right.left = TreeNode(3)s = Solution()ans = s.inorderTraversal(root)print(ans)