解决方法一:
递归:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def LDR(self, ldr, root):
if root == None:
return
if root.left != None:
self.LDR(ldr, root.left)
ldr.append(root.val)
if root.right != None:
self.LDR(ldr, root.right)
def inorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
ldr = []
self.LDR(ldr, root)
return ldr
解法二: 利用迭代
压入栈的时候不仅压入节点,还把节点的右子树也压入栈
class Solution:
def inorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
stack = []
ldr = []
while root != None or len(stack)!=0:
if root != None:
stack.append(root)
root = root.left
else:
cur = stack.pop()
ldr.append(cur.val)
root = cur.right
return ldr