breadth first search - Python list unexpected behavior? -


when trying breadth first solution, came across unexpected behavior. in function levelorder if left node being processed first, giving correct result 3 2 5 1 4 7 , if right node kept before left node output 3 5 2 7 4 1.

i have no clue causing such behavior. question has been asked on hackerrank

given input

     3    /   \   2     5  / \     \ 1   4     7 

my code

import sys class node:     def __init__(self,data):         self.right=self.left=none         self.data = data class solution:     def insert(self,root,data):         if root==none:             return node(data)         else:             if data<=root.data:                 cur=self.insert(root.left,data)                 root.left=cur             else:                 cur=self.insert(root.right,data)                 root.right=cur         return root      def levelorder(self,root):         #write code here         list = []         = 0         list.append(root)          while < len(list):             if root.left:                 list.append(root.left)             if root.right:                 list.append(root.right)              += 1             #print('i=',i,' len(list)=',len(list))             try:                 root = list[i]             except exception e:                 = len(list)         each in list:             print(each.data, end=' ')              t=int(input()) mytree=solution() root=none in range(t):     data=int(input())     root=mytree.insert(root,data) mytree.levelorder(root)             

you have given youself explanation. if go right left, every level in reverse. 2 5 -> 5 2 , 1 4 7 -> 7 4 1.

for solution, should think queue. using first-in-first-out, can append left , right branch in each level (if not none) , take first element of list print out next level. when queue empty, you're done.

as additional point, should avoid except exception , more specific exception, in case indexerror. that's general coding style prevent exception handlings don't want handle (like keyboardinterrupt).


Comments

Popular posts from this blog

php - Wordpress website dashboard page or post editor content is not showing but front end data is showing properly -

javascript - Get parameter of GET request -

javascript - Twitter Bootstrap - how to add some more margin between tooltip popup and element -