def makeparsetree(expression): now = BinaryTree(None) parent = Stack() for item in expression: if item in openbraket: now.addleft(None) parent.push(now) now = now.getleft() elif item in endbraket: if not parent.isEmpty(): now = parent.pop() elif item in operators: now.setdata(item) parent.push(now) now.addright(None) now = now.getright() else : now.setdata(int(item)) now = parent.pop() """else: return "Invalid expression""" # print "Read ", item #debug line return now
from BinaryTree import BinaryTree def next_node(root): current = root if current.right is not None: current = current.right while current.left is not None: current = current.left return current # Go up until we find a parent who this is the left subtree of while current.parent is not None: if current.parent.left is current: return current.parent current = current.parent if __name__ == '__main__': root = BinaryTree(4) root.addleft(BinaryTree(2)) root.left.addright(BinaryTree(3)) root.left.addleft(BinaryTree(1)) root.addright(BinaryTree(6)) print('Expect 3:', next_node(root.left).data) print('Expect 4:', next_node(root.left.right).data) # Tree of one node root = BinaryTree(0) print('Expect None:', next_node(root))