就是二叉樹的中序遍歷,這道題感覺主要是先要考迭代的方法,畢竟遞歸的方法在有些人看來有些簡單。
可先看看遞歸把
# 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 = []
def helper(root):
if not root:
return
helper(root.left)
res.append(root.val)
helper(root.right)
helper(root)
return res
左--中--右
迭代的方法
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
r, stack = [], []
while True:
while root:
stack.append(root)
root = root.left
if not stack:
return r
node = stack.pop()
r.append(node.val)
root = node.right
return r
這裏面一開始不明白二叉樹是怎麼放入到list中的,原來是把root這個節點放入到list中,最大一個的誤區是root是一個節點,根節點能代表一整棵樹但是並不是說把一整棵樹放入到list中,放入的節點,節點。list列表採用棧的方式來用append和pop實現棧的後進先出。