剑指Offer 32 从上到下打印二叉树

从上到下打印二叉树

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

 1 # -*- coding:utf-8 -*-
 2 # class TreeNode:
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.left = None
 6 #         self.right = None
 7 class Solution:
 8     # 返回从上到下每个节点值列表,例:[1,2,3]
 9     def __init__(self):
10         self.list = []
11         
12     def levelOrder(self,level):
13         count = len(level)
14         while count > 0:
15             root = level.pop(0)
16             self.list.append(root.val)
17             if root.left != None:
18                 level.append(root.left)
19             if root.right != None:
20                 level.append(root.right)
21             count -= 1
22         if len(level) > 0:
23             self.levelOrder(level)
24         
25         
26     def PrintFromTopToBottom(self, root):
27         if root == None:
28             return self.list
29         else:
30             level = []
31             level.append(root)
32             self.levelOrder(level)
33             return self.list
34         # write code here

打印成多行

 1 # -*- coding:utf-8 -*-
 2 # class TreeNode:
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.left = None
 6 #         self.right = None
 7 class Solution:
 8     # 返回二维列表[[1,2],[4,5]]
 9     def __init__(self):
10         self.list = []
11         self.result = []
12         
13     def levelOrder(self,level):
14         count = len(level)
15         while count > 0:
16             root = level.pop(0)
17             self.list.append(root.val)
18             if root.left != None:
19                 level.append(root.left)
20             if root.right != None:
21                 level.append(root.right)
22             count -= 1
23         if len(self.list) > 0:
24             self.result.append(self.list[:])
25             self.list = []
26         if len(level) > 0:
27             self.levelOrder(level)
28             
29     def Print(self, pRoot):
30         if pRoot == None:
31             return self.list
32         else:
33             level = []
34             level.append(pRoot)
35             self.levelOrder(level)
36             return self.result
37         # write code here

打印成之字型

 1 # -*- coding:utf-8 -*-
 2 # class TreeNode:
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.left = None
 6 #         self.right = None
 7 class Solution:
 8         # 返回二维列表[[1,2],[4,5]]
 9     def __init__(self):
10         self.list = []
11         self.result = []
12         self.rev = -1
13         
14     def levelOrder(self,level):
15         count = len(level)
16         while count > 0:
17             root = level.pop(0)
18             self.list.append(root.val)
19             if root.left != None:
20                 level.append(root.left)
21             if root.right != None:
22                 level.append(root.right)
23             count -= 1
24         if len(self.list) > 0:
25             self.rev *= -1
26             self.result.append(self.list[::self.rev])
27             self.list = []
28         if len(level) > 0:
29             self.levelOrder(level)
30     def Print(self, pRoot):
31         if pRoot == None:
32             return self.list
33         else:
34             level = []
35             level.append(pRoot)
36             self.levelOrder(level)
37             return self.result
38         # write code here
原文地址:https://www.cnblogs.com/asenyang/p/11013891.html