binary tree

class Node:
	def __init__(self, value = None,left = None, right = None):
		self.value = value
		self.left = left
		self.right = right
#recursion
def preTraverse(root):
	if root == None:
		return
	print (root.value)
	preTraverse(root.left)
	preTraverse(root.right)

#iterative
def preorderTraversal(self, root):
    if root is None:
        return []
    stack = [root]
    preorder = []
    while stack:
        node = stack.pop() #相当于提取了root根节点
        preorder.append(node.val)
        if node.right: #先右后左,先进后出的规则
            stack.append(node.right)
        if node.left:
            stack.append(node.left)
    return preorder

if __name__ == '__main__':
	root = Node('D',Node('B',Node('A'),Node('C')),Node('E',right = Node('G',Node('F'))))
	print 'recursion', preTraverse(root)

你可能感兴趣的:(binary tree)