""" Week7-1 Notes """

def getChildren(t):
    result = []
    if t["left"] != None:
        leftSubtree = t["left"]
        result.append(leftSubtree["contents"])
    if t["right"] != None:
        rightSubtree = t["right"]
        result.append(rightSubtree["contents"])
    return result

myTree = { "contents" : 6,
      "left"  : { "contents" : 3,
                  "left"  : { "contents" : 8,
                              "left"  : None,
                              "right" : None },
                  "right" : { "contents" : 7,
                              "left"  : None,
                              "right" : None } },
      "right" : { "contents" : 2,
                  "left"  : None,
                  "right" : { "contents" : 9,
                              "left"  : None,
                              "right" : None } } }

print(getChildren(myTree))
print(getChildren(myTree["right"]))
print(getChildren(myTree["right"]["right"]))

###

def countNodes(t):
    print(t)
    if t["left"] == None and t["right"] == None:
        return 1
    else:
        count = 0
        if t["left"] != None:
            count += countNodes(t["left"])
        if t["right"] != None:
            count += countNodes(t["right"])
        return count + 1

print(countNodes(myTree))

def countNodes(t):
    print(t)
    if t == None:
        return 0
    else:
        count = 0
        count += countNodes(t["left"])
        count += countNodes(t["right"])
        return count + 1

print(countNodes(myTree))

###

def sumNodes(t):
    if t["left"] == None and t["right"] == None:
        return t["contents"]
    else:
        result = 0
        if t["left"] != None:
            result += sumNodes(t["left"])
        if t["right"] != None:
            result += sumNodes(t["right"])
        return result + t["contents"]

print(sumNodes(myTree))

###

# can use this tree if you want to explore getPastGen on your own

familyTree = { "contents" : "Arya",
        "left" : { "contents" : "Ned",
                "left"  : { "contents" : "Rickard",
                            "left" : None, "right" : None },
                "right" : { "contents" : "Lyarra",
                            "left" : None, "right" : None } },
        "right" : { "contents" : "Catelyn",
                "left"  : { "contents" : "Hoster",
                            "left" : None, "right" : None },
                "right" : { "contents" : "Minisa",
                           "left" : None, "right" : None } } }
