I have a window with a treeview and an entry widget. I would like to be able to write in the entry widget while still being able to use the up/down arrows to navigate the treeview. There are a few ways I've tried doing this:

Send all keyboard events to both widgets (I have tried using custom bind_tags, unsuccessfully)
Use the entry <Up> and <Down> bindings to navigate the treeview (I have not found a straightforward way to move up and down a tree with multiple parents and children, such as a file directory)
Use the root <Key> binding to selectively send raw keycodes to the entry widget so things like backspace and left/right arrow work as expected (I haven't come across a method to send keycodes/events directly to the entry widget)
Your #2 is the right approach. You will have to write methods that calculate how to move up and down the tree. You can get the currently selected item, then use the .next() method to get the next child of the same parent. If that returns an empty string you can get the parent (by calling .parent()) and call .next() on it. You can recursively keep doing that until you hit the end of the tree (the parent is the root node, and .next() returns the empty string).
Split keyboard entry between two Tkinter widgets