天天看點

16題:輸入一顆二進制樹,從上往下按層列印樹的每個結點,同一層中按照從左往右的順序列印。

題目部落格:http://blog.csdn.net/v_JULY_v/article/details/6057286

題目(微軟):

輸入一顆二進制樹,從上往下按層列印樹的每個結點,同一層中按照從左往右的順序列印。  

例如輸入

   8

  / /

 6 10

/ / / /

5 7 9 11

輸出8 6 10 5 7 9 11。

代碼為:

#coding=utf-8
'''
Created on 2014年5月24日

@author: Administrator
'''
class TreeNode:
    def __init__(self,value,leftChild=None,rightChild=None):
        self.value=value
        self.leftChild,self.rightChild=leftChild,rightChild

def printTreeWithFloor(root):
    if not root:
        return
    else:
        li=[root]
        while 1:
            
            if len(li)==0:
                break
            else:
                tempnode=li.pop(0)
                if not tempnode:
                    continue
                print tempnode.value,
                li.append(tempnode.leftChild)
                li.append(tempnode.rightChild)
        
        
if __name__ == '__main__':
    node5=TreeNode(5)
    node7=TreeNode(7)
    node9=TreeNode(9)
    node11=TreeNode(11)
    node6=TreeNode(6,leftChild=node5,rightChild=node7)
    node10=TreeNode(10,leftChild=node9,rightChild=node11)
    node8=TreeNode(8,leftChild=node6,rightChild=node10)
    #printTree(node8)
    #print 
    #swap(node8)
    #printTree(node8)
    printTreeWithFloor(node8)