Пример #1
0
            if current.left is None:
                print "{data} ".format(data=current.data),
                current = current.right
            else:
                predecessor = MorrisTraversal.find_predecessor(current)

                if predecessor.right is None:
                    print "{data} ".format(data=current.data),
                    predecessor.right = current
                    current = current.left
                else:
                    predecessor.right = None
                    current = current.right


if __name__ == '__main__':
    bt = BinaryTree()
    root = None
    root = bt.add_head(10, root)
    root = bt.add_head(50, root)
    root = bt.add_head(-10, root)
    root = bt.add_head(7, root)
    root = bt.add_head(9, root)
    root = bt.add_head(-20, root)
    root = bt.add_head(30, root)

    mt = MorrisTraversal()
    mt.inorder(root)
    print "\n",
    mt.preorder(root)
Пример #2
0
            if current.left is None:
                print "{data} ".format(data=current.data),
                current = current.right
            else:
                predecessor = MorrisTraversal.find_predecessor(current)

                if predecessor.right is None:
                    print "{data} ".format(data=current.data),
                    predecessor.right = current
                    current = current.left
                else:
                    predecessor.right = None
                    current = current.right


if __name__ == '__main__':
    bt = BinaryTree()
    root = None
    root = bt.add_head(10, root)
    root = bt.add_head(50, root)
    root = bt.add_head(-10, root)
    root = bt.add_head(7, root)
    root = bt.add_head(9, root)
    root = bt.add_head(-20, root)
    root = bt.add_head(30, root)

    mt = MorrisTraversal()
    mt.inorder(root)
    print "\n",
    mt.preorder(root)