code: def get_node(start, tree, pnames):
      
      def get_first_branch(node):
          if node not in pnames:  # one way to hit a root
              return []
          if pnames[node]:  # mmmm names
              fp = pnames[node][0]
              if cycle_check(node, fp, pnames):
                  fp = pnames[node][1]  # if there are double cycles I WILL KILL FOR THE PLEASURE IF IT
              print(fp)
              return [fp] + get_first_branch(fp)
          else:
              return []
  
      branch = get_first_branch(start)
  
      for n in branch[::-1]:
          tree = tree[n]
  
      assert start in tree, "our start wasnt in the tree! OH NO!"
      branch = [start] + branch
      print('branch', branch)
      return tree, branch
docs: for each parent find a single branch to root