OutWiker is a free tool for organising notes in a tree structure. You might have seen similar apps described as outliners or personal wikis.
The program uses wiki-type notation and its own commands to set up lists, tables, headings and assorted formatting options, insert images and more.
There's also support for including graphs, diagrams, equations and more. Pages can also have as many attached files as you need.
Right-clicking a page gives you options to add sibling or child pages, helping you build your wiki structure. This can be rearranged later by dragging and dropping, to move one section of the tree somewhere else.
Unusually, your wiki structure isn't stored in some custom single file-- it's built around a standard folder tree. If your top-level page was called Contents, it'll be stored in a folder called Contents, with the page held in a file called __content.html. That makes complex projects relatively easy to access in other ways.
The complication is that this isn't a full WYSIWYG package. You can't drag and drop images onto the page, draw and resize tables or anything similar: the program works using wiki and other notation. Don't let that put you off entirely - toolbar buttons help you find and apply this at speed - but just be prepared to spend some time learning the options before you're ready to create documents.