# 二叉树前序遍历(非递归)
class TreeNode:
def __init__(self,val):
self.data=val
self.left=None
self.right=None
def preorder_travel(root):
if root is None:
return []
stack=[root]
result=[]
while stack:
node=stack.pop()
result.append(node.data)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return result
#二叉树前序遍历(递归)
def simple_travel(root):
result=[]
if root==None:
return []
else:
return [root.data]+simple_travel(root.left)+simple_travel(root.right)
return result
#测试代码
head=TreeNode(1)
head.right=TreeNode(3)
head.left=TreeNode(2)
head.left.left=TreeNode(4)
head.left.right=TreeNode(5)
print(preorder_travel(head))
print(simple_travel(head))