'None' in python -
i have simple program above creates bst sorted array. should parse tree without showing leaves none. explain why program still spits out 'none'. i'm python noob , appreciate help.i have tried != 'none' along none same results.
class node: def __init__(self,value): self.value=value self.nodeleft=none self.noderight=none def makebst(ia,start,end,tree): if (end < start): return none mid = (start + end) / 2 n = node(ia[mid]) n.nodeleft = makebst(ia, start, mid-1, tree) n.noderight = makebst(ia, mid+1, end, tree) tree.append(n) return n def printbst(root): print 'rr' ,root.value if root.nodeleft == none: print 'eot' else: print printbst(root.nodeleft) if root.noderight == none: print 'eot' else: print printbst(root.noderight) if __name__ == '__main__': array = [1, 2, 3, 4, 5, 6] dic = [] root = makebst(array, 0, len(array)-1, dic) printbst(root)
the problem code passing return value of printbst
print
. since printbst
not return anything, none
printed.
so when wrote:
print printbst(root.nodeleft)
that code print none
because printbst
not contain return statement , defaults returning none
.
you need change printbst
this:
def printbst(root): print 'rr' ,root.value if root.nodeleft none: print 'eot' else: printbst(root.nodeleft) if root.noderight none: print 'eot' else: printbst(root.noderight)
note using is
correct way test none
.
that said, can make code simpler this:
def printbst(root): if root none: print 'eot' return print 'rr', root.value printbst(root.nodeleft) printbst(root.noderight)
as being simpler, code has additional benefit of not failing when presented empty tree.
Comments
Post a Comment