def main():
    t1 = produceTree(list(range(1, 56)))
    t2 = getRightMostNode(t1, 2)
    t2 = deepcopy(t2)
    # t2.right = None # if uncommented, both should return false, otherwise both will return true
    print(preOrderTraversal(t2) in preOrderTraversal(t1))
    print(isSubtree(t1, t2))
示例#2
0
def main():
    tree = produceTree(list(range(1, 25)))
    printTree(tree)
    createParents(tree)
    print(
        firstCommonAncestor(tree.right.right, tree.right.left.left.left).data)
示例#3
0
def main():
    tree = produceTree(list(range(1, 8)))
    printTree(tree)
    # print(permutations(tree))
    pprint(sequences(tree))
    if tree == None:
        return True
    if abs(getHeight(tree.left) - getHeight(tree.right)) > 1:
        return False
    else:
        return checkBalanced(tree.left) and checkBalanced(tree.right)


def checkHeight(tree):
    if tree == None:
        return -1

    leftHeight = checkHeight(tree.left)
    if leftHeight == -2:
        return -2
    rightHeight = checkHeight(tree.right)
    if rightHeight == -2:
        return -2

    if abs(leftHeight - rightHeight) > 1:
        return -2
    else:
        return max(checkHeight(tree.left), checkHeight(tree.right)) + 1


root = produceTree(list(range(1, 9)))
print(checkHeight(root))
print(checkBalanced(root))  # True
root.right = None
print(checkBalanced(root))  # False
# Given a binary tree, design an algorithm which creates a list of all nodes at each depth

from Ch42MinTree import produceTree
from Chapter3Stacks import LinkedList


def traverse(root):
    level = LinkedList()
    level.insert(root)
    levelNode = level.first
    # print(dir(levelNode.data))
    level.printSelf() 
    while levelNode != None:
        newLevel = LinkedList()
        node = levelNode
        while node != None and node.data != None:
            if node.data.left: newLevel.insert(node.data.left)
            if node.data.right: newLevel.insert(node.data.right)
            node = node.next

        newLevel.printSelf()
        levelNode = newLevel.first

if __name__ == "__main__":
    root = produceTree([1,2,3,4,5,6,7,8])
    traverse(root)