예제 #1
0
from models import BinaryNode

a_node = BinaryNode("A")
b_node = BinaryNode("B")
c_node = BinaryNode("C")
d_node = BinaryNode("D")
e_node = BinaryNode("E")

root = a_node
root.left = b_node
root.right = c_node
root.right.right = d_node
root.right.left = e_node


# preorder traversal
def traverse(root, target):
    if root is None:
        return False

    if root.data == target.data:

        return True

    left = traverse(root.left, target)
    right = traverse(root.right, target)

    if left or right:
        return True

    else:
from models import BinaryNode

# TEST 1
# root = BinaryNode("A")
# root.left = BinaryNode("B")
# root.left.left = BinaryNode("D")
# root.right=BinaryNode("C")
# root.right.left = BinaryNode("E")
# root.right.right = BinaryNode("F")

# TEST 2
root = BinaryNode("A")
root.left = BinaryNode("B")
root.left.left = BinaryNode("C")
root.left.left.left = BinaryNode("E")
root.left.left.right = BinaryNode("D")


def print_bin_node(lst):
    for x in range(0, len(lst)):
        try:
            lst[x] = lst[x].data
        except:
            continue
    return lst


def print_paths(root, lst):
    if root is None:
        return []
# given a binary tree, return a list of it's inorder traversal result

from models import BinaryNode

givenTree = BinaryNode(4)
givenTree.insertNode(2)
givenTree.insertNode(6)
givenTree.insertNode(1)
givenTree.insertNode(3)
givenTree.insertNode(5)
givenTree.insertNode(7)


def iterativeInOrder(root):
    if root is None:
        return []

    retList = []
    stk = []
    curr = root
    while curr is not None or len(stk) > 0:
        if curr is not None:
            stk.insert(0, curr)
            curr = curr.getLeft()

        else:
            front = stk[0]

            retList.append(front)
            stk.remove(front)