1.递归实现:
遍历的递归实现就只是将递归顺序换一下就行了
def preorderTraversal(self, root):
# write your code here
# 递归
ret = []
if not root:
return ret
self.preorderHelper(ret, root)
return ret
def preorderHelper(self, ret, root):
if not root:
return
ret.append(root.val)
self.preorderHelper(ret, root.left)
self.preorderHelper(ret, root.right)
2.非递归实现:
def preorderTraversal(self, root):
#非递归
ret = [0]
p = [root]
while root or len(p) != 1:
p.append(root.val)
if root.right:
p.append(root.right)
root = root.left
if root and len(p) != 1:
root = p[len(p) - 1]
del p[len(p) - 1]
n = len(ret)
return ret[1:n]