Is C# good for data structures and algorithms?
Yes. It reads much like Java: types make every node, reference and generic parameter explicit, and System.Collections.Generic covers most of the structures on this path. Two habits are worth building early. LINQ is concise, but every OrderBy is a sort and every Where a loop, so it hides the costs you are learning to count; and Array.Sort is unstable, which matters whenever equal keys must keep their order.
Which .NET collections match which data structures?
List<T> is a dynamic array, Stack<T> and Queue<T> are array-backed, LinkedList<T> is a doubly linked list, Dictionary<TKey,TValue> and HashSet<T> are hash tables, and SortedDictionary<TKey,TValue> and SortedSet<T> are red-black trees, balanced like the AVL tree you build in step two. SortedList<TKey,TValue> is a pair of arrays kept in key order, and since .NET 6 PriorityQueue<TElement,TPriority> is an array-backed min-heap. There is no trie or graph class; those you write yourself.
Should a tree or list node be a class or a struct in C#?
A class. A struct is a value type: it cannot contain a field of its own type at all, and wherever it is copied, a change to the copy leaves the original untouched. A class instance is a reference, so nodes can point at each other the way a linked list or a tree needs. Keep structs for small values, such as a grid coordinate or a weighted edge.
Does C# have a priority queue?
Since .NET 6, yes: PriorityQueue<TElement,TPriority>, an array-backed min-heap in which every element is enqueued with its own priority; pass an IComparer<TPriority> that reverses the order to get a max-heap. .NET Framework and older runtimes have none, which is why C# developers long wrote their own heap or bent a SortedSet<T> into one, and why being able to write one still matters. Step two is where you do.
Which courses on this path are not taught in C#?
Three: dynamic programming and the Python interview series, taught in Python, and bit manipulation, taught in C++. They are listed after the steps, each with a link that opens it in its own language. A memo table in C# is an array or a Dictionary, and bit tricks port cleanly, down to the distinction C++ draws: >> keeps the sign on an int and fills with zeros on a uint.
Do I need to know C# before starting this path?
Classes, methods, arrays, loops and generic collections such as List<T>, at least. If those are new, Coddy's C# course takes you there first, free, and this path picks up where it ends.