Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jianminchen/ea0c969eb79bb5d2bd3e08a0d21cea08 to your computer and use it in GitHub Desktop.
Save jianminchen/ea0c969eb79bb5d2bd3e08a0d21cea08 to your computer and use it in GitHub Desktop.
Print binary tree extreme corner in alternate order - being an interviewer
// 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