二叉树的中序遍历
1,程序简介
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
示例 1:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7e9023c160ebf21c3e17f615a3e885bd.png)
- 输入:root = [1,null,2,3]
- 输出:[1,3,2]
示例 2:
示例 3:
示例 4:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1bcbd90ea5839c4d6716dfe90cfcfe10.png)
示例 5:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/74019cbbe0bc22b6df9f4d5ee10e06ad.png)
- 输入:root = [1,null,2]
- 输出:[1,2]
提示:
树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
2,程序代码
"""
Created on Wed Dec 15 07:39:24 2021
Function:
@author: 小梁aixj
"""
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class List2Tree(object):
def __init__(self, nums: list):
self.nums = nums
self.queue = []
if len(nums) == 1:
self.root = TreeNode(self.nums.pop(0))
else:
a=self.nums.pop(0)
b=self.nums.pop(0)
c=self.nums.pop(0)
self.root = TreeNode(a)
if b is not None:
self.root.left=TreeNode(b)
else:
self.root.left=b
if c is not None:
self.root.right=TreeNode(c)
else:
self.root.right = c
self.queue.append(self.root.left)
self.queue.append(self.root.right)
def convert(self):
while len(self.nums) > 0 and len(self.queue) > 0:
node = self.queue.pop(0)
if node is not None:
num = self.nums.pop(0)
if num is not None:
node.left = TreeNode(num)
else:
node.left = num
if len(self.nums) > 0:
num = self.nums.pop(0)
else:
num = None
if num is not None:
node.right = TreeNode(num)
else:
node.right = num
self.queue.append(node.left)
self.queue.append(node.right)
return self.root
class Solution(object):
def inorderTraversal(self, root):
if root is None:
return []
root = List2Tree(root).convert()
res = []
stack=[root]
while len(stack) > 0:
curr=stack.pop()
if not isinstance(curr, TreeNode):
res.append(curr)
continue
if curr.right is not None:
stack.append(curr.right)
stack.append(curr.val)
if curr.left is not None:
stack.append(curr.left)
return res
s = Solution()
print(s.inorderTraversal(root = [1,None,2,3]))
print(s.inorderTraversal(root = [1,None,2]))
3,运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2e73748d5b3edfdf41d6f07ee65128cd.png)