Esempio n. 1
0
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
Esempio n. 2
0
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))