stripe-archive / brushfire

Distributed decision tree ensemble learning in Scala
Other
391 stars 50 forks source link

Experimental iterator for depth-first tree traversals #98

Open jhoon-stripe opened 7 years ago

jhoon-stripe commented 7 years ago

I don't intend to merge this pull request. I'm putting this up here to demonstrate a method for obtaining a functional iterator for trees. This was a way for me to get a bit more familiar with dependent types (since we need to work with the type member of FullBinaryTreeOps) and generally play with Scala data structures.

At its cores, this PR introduces a wrapper around a stack of tree nodes, which allows us to iterate through the tree's nodes depth-first.

cc @rob-stripe @sritchie-stripe @thomas-stripe @erik-stripe @oscar-stripe @kelley-stripe @avi-stripe

erik-stripe commented 7 years ago

Nice! Glad you got the path-dependent types working.

As an additional challenge, you could try implementing streamNode directly with foldNode.