Created
May 17, 2018 05:35
-
-
Save jianminchen/ea0c969eb79bb5d2bd3e08a0d21cea08 to your computer and use it in GitHub Desktop.
Print binary tree extreme corner in alternate order - being an interviewer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Binary Tree | |
# | |
# // Given a binary tree, Print nodes of extreme corners of each level but in alternate order. | |
# | |
# // 3 | |
# // / \ | |
# // 9 20 | |
# // / \ | |
# // 15 7 | |
# | |
# // print 3 20 15 | |
# // left most on the 0-th level | |
# // right most on the 1-th level | |
# // left most on the 2-th level. ….. | |
# | |
class TreeNode { | |
TreeNode left; | |
TreeNode right; | |
int val; | |
} | |
class TreeNode: | |
def __init__(self, val): | |
self.val = val | |
self.right = None | |
self.left = None | |
def zigzag_traversal(root): | |
queue = [] | |
queue.append(root) | |
flag = False | |
if not root: | |
return | |
while queue: | |
next_level = [] | |
l = [] | |
for node in queue: | |
l.append(node.val) #[15, 7] | |
if node.left: | |
next_level.append(node.left.val) #[15,7] | |
if node.right: | |
next_level.append(node.right.val) #[9,20] | |
if flag: | |
print(l[0]) # print 3, 20, 15 | |
else: | |
print(l[-1]) # print 20 # negative 1 is the last element of a list in python | |
flag = not Flag #set Flag = False | |
queue = next_level # queue becomes [15, 7] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment