Z8SLacSv.py
- <function Tree.__len__.<locals>.<lambda> at 0x7fe558fca598>
- <__main__.Tree object at 0x7fe558fcfb70> <__main__.Tree object at 0x7fe558fcfc18> 3
- 1
- <__main__.Tree object at 0x7fe5598725f8> <__main__.Tree object at 0x7fe558fbec88> 2
- 1
- None None 1
- 1
- None None 1
- Traceback (most recent call last):
- File "../decompiler.py", line 219, in <module>
- tree()
- File "../decompiler.py", line 61, in tree
- print(len(t))
- File "../decompiler.py", line 56, in __len__
- return self.preorder(function=lambda data, d : 1, join=lambda l,r,c : ((0 if l is None else l) + (0 if r is None else r) + c))
- File "../decompiler.py", line 20, in preorder
- l = self.left.preorder(function, depth+1)
- File "../decompiler.py", line 20, in preorder
- l = self.left.preorder(function, depth+1)
- File "../decompiler.py", line 26, in preorder
- return join(l,r,c)
- TypeError: 'int' object is not callable
7YtNyaTx.py
- class Tree:
- def __init__(self, data=None, left=None, right=None):
- self.left = left
- self.right = right
- self.data = data
- def preorder(self, function=lambda data, d : None, join=lambda l,r,c : None, depth=0):
- print(join)
- l = None
- r = None
- print(self.left, self.right, self.data)
- if self.left is not None:
- l = self.left.preorder(function, depth+1)
- if self.right is not None:
- r = self.left.preorder(function, depth+1)
- c = function(self.data, depth)
- print(join)
- print(l,r,c)
- return join(l,r,c)
- def inorder(self, function=lambda data, d : None, join=lambda l,r,c : None, depth=0):
- l = None
- r = None
- if self.left is not None:
- l = self.left.preorder(function, depth+1)
- c = function(self.data, depth)
- if self.right is not None:
- r = self.left.preorder(function, depth+1)
- return join(l,r,c)
- def postorder(self, function=lambda data, d : None, join=lambda l,r,c : None, depth=0):
- l = None
- r = None
- c = function(self.data, depth)
- if self.left:
- l = self.left.preorder(function, depth+1)
- if self.right:
- r = self.left.preorder(function, depth+1)
- return join(l,r,c)
- def __len__(self):
- # def join(left, right, curr):
- # sum = curr
- # if left is not None:
- # sum += left
- # if right is not None:
- # sum += right
- # return sum
- return self.preorder(function=lambda data, d : 1, join=lambda l,r,c : ((0 if l is None else l) + (0 if r is None else r) + c))
- def tree():
- t = Tree(3, Tree(2, Tree(1), Tree(4)), Tree(5, Tree(6), Tree(7)))
- print(len(t))