code: def maxTreeDepthDivide(rootValue, currentDepth=0, parallelLevel=2):
      
      thisRoot = shared.getConst('myTree').search(rootValue)
      if currentDepth >= parallelLevel:
          return thisRoot.maxDepth(currentDepth)
      else:
          # Base case
          if not any([thisRoot.left, thisRoot.right]):
              return currentDepth
          if not all([thisRoot.left, thisRoot.right]):
              return thisRoot.maxDepth(currentDepth)
  
          # Parallel recursion
          return max(
              futures.map(
                  maxTreeDepthDivide,
                  [
                      thisRoot.left.payload,
                      thisRoot.right.payload,
                  ],
                  cycle([currentDepth + 1]),
                  cycle([parallelLevel]),
              )
          )
docs: Finds a tree node that represents rootValue and computes the max depth
         of this tree branch.
         This function will emit new futures until currentDepth=parallelLevel