-
Notifications
You must be signed in to change notification settings - Fork 186
/
Copy path36_Print.py
43 lines (42 loc) · 1.39 KB
/
36_Print.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 按之字形顺序打印二叉树
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def Print(self, pRoot):
if pRoot == None:
return []
# write code here
stack1 = [pRoot]
stack2 = []
# 存储打印
ret = []
# 当1和2中有空时
while stack1 or stack2:
if stack1:
tmpRet = []
while stack1:
# 取出stack1中的一个节点
tmpNode = stack1.pop()
tmpRet.append(tmpNode.val)
# 把左右子树放到stack2中
if tmpNode.left:
stack2.append(tmpNode.left)
if tmpNode.right:
stack2.append(tmpNode.right)
ret.append(tmpRet)
if stack2:
tmpRet = []
while stack2:
# 取出stack1中的一个节点
tmpNode = stack2.pop()
tmpRet.append(tmpNode.val)
# 把左右子树放到stack2中
if tmpNode.right:
stack1.append(tmpNode.right)
if tmpNode.left:
stack1.append(tmpNode.left)
ret.append(tmpRet)
return ret