Description
Given the root of a binary tree, return the inorder traversal of its nodes’ values.
Constraints:
• The number of nodes in the tree is in the range [0, 100].
• -100 <= Node.val <= 100
Follow up:
Recursive solution is trivial, could you do it iteratively?
Example
Example 1:
Input: root = [1,null,2,3]
Output: [1,3,2]
Example 2:
Input: root = []
Output: []
Example 3:
Input: root = [1]
Output: [1]
Example 4:
Input: root = [1,2]
Output: [2,1]
Example 5:
Input: root = [1,null,2]
Output: [1,2]
Submissions
题目要求给定一个二叉树,返回它的中序遍历。因此采用迭代的解题思路,首先先达到root的最左端为空的位置,用tmp记录经过所有节点,然后开始tmp出栈,得到左端叶子的value值,并加入列表res,接着访问叶子的right,若为空,tmp继续出栈,得到叶子的上一个节点,以此类推,最后tmp为空,并且此时达到最右端叶子。
实现代码如下:
# 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: TreeNode) -> List[int]:
tmp=[]
res=[]
while root or tmp:
if root:
tmp.append(root)
root=root.left
else:
root=tmp.pop()
res.append(root.val)
root=root.right
return res