[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/yangjun616/algorithm-python2/master/binary_tree_traversal.py [Back]  [Original]

#! /usr/bin/env python
#coding:utf-8

"""
#

"""

from collections import namedtuple
from sys import stdout
 
Node = namedtuple('Node', 'data, left, right')
tree = Node(1,
            Node(2,
                 Node(4,
                      Node(7, None, None),
                      None),
                 Node(5, None, None)),
            Node(3,
                 Node(6,
                      Node(8, None, None),
                      Node(9, None, None)),
                 None))


#pre-orderNLR

def preorder(node):
    if node is not None:
        print node.data,
        preorder(node.left)
        preorder(node.right)


#in-orderLNR

def inorder(node):
    if node is not None:
        inorder(node.left)
        print node.data,
        inorder(node.right)


#post-orderLRN

def postorder(node):
    if node is not None:
        postorder(node.left)
        postorder(node.right)
        print node.data,


#level-order

def levelorder(node, more=None):
    if node is not None:
        if more is None:
            more = []
        more += [node.left, node.right]
        print node.data,
    if more:    
        levelorder(more[0], more[1:])
 
print '  preorder: ',
preorder(tree)
print '\t\n   inorder: ',
inorder(tree)
print '\t\n postorder: ',
postorder(tree)
print '\t\nlevelorder: ',
levelorder(tree)
print '\n'

Web Proxy Viewer  |  New URL  |  Original Page