LeetCode94题
思路:虽然是迭代实现,但是栈的使用还是不可避免的。用一个栈保存根节点,然后指针去遍历左子树,再依次把根节点保存。当左子树没有了,就出栈栈顶元素,然后指针指向右子树的根。
代码如下:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
res=[]
stack=[]
p=root
while p or stack:
if p:
stack.append(p)
p=p.left
else :
p=stack.pop()
res.append(p.val)
p=p.right
return res