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

#



#





![](./pics/travesaltree1.png)



- N
- L
- R



1. (PreorderTraversal,NLR):
2. (InorderTraversal,LNR):
3. (PostorderTraversal,LRN):
4. (levelorderTraversal):



1. preorder:    1 2 4 7 5 3 6 8 9
2. inorder:     7 4 2 5 1 8 6 9 3
3. postorder:   7 4 5 2 8 9 6 3 1
4. level-order: 1 2 3 4 5 6 7 8 9



#(Python)
	
	#! /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:])
	
	if __name__=="__main__"
	    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