二叉树中序遍历
链接: link.
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
样例
输入:root = [1,null,2,3]
输出:[1,3,2]
输入:root = []
输出:[]
输入:root = [1,2]
输出:[2,1]
思路
- 循环
- 递归
python实现
循环:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
temp,res = [],[]
cur = root
#注意判定条件 如果根为空或者没有temp出栈完毕则跳出
while temp or cur:
if cur:
#如果根有左子树 则将根与左子树都进栈,直到没有左子树
temp.append(cur)
cur = cur.left
else:
#当cur节点没有左子树时,需要将其出栈,因为
cur = temp.pop()
res.append(cur.val)
cur = cur.right
return res
递归:
这里递归我不知道如何存放递归过程中的结果到列表中 所以这里直接print出来了。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
if root:
self.inorderTraversal(root.left)
print(root.val,end='')
self.inorderTraversal(root.right)
#输入输出如下:
'''
input:
[1,null,2,3]
output:
132
'''