So I made this listing for topic wise coding resources.↵
It is open sourced [here](https://github.com/hkirat/awesome-competitive-coding)↵
Thought of sharing it here too!↵
↵
# Awesome Competitive Coding [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)↵
↵
A Curated list of Topic wise Theory and Questions to Get You Started On Competitive Coding.↵
↵
*Inspired by the [awesome](https://github.com/sindresorhus/awesome) list thing. You might also like to read complete [awesome-list](https://github.com/sindresorhus/awesome).*↵
↵
### Contributing↵
Kindly Go Through [Contribution Guidelines](https://github.com/hkirat/awesome-competitive-coding/blob/master/CONTRIBUTING.md) First.↵
↵
Topics↵
---↵
- [Binary and Ternary Search](#binary-and-ternary-search)↵
- [Dynamic Programming](#dynamic-programming)↵
- [Flow](#flow)↵
- [Game Theory](#game-theory)↵
- [Graphs](#graphs)↵
- [Greedy](#greedy)↵
- [Maths](#maths)↵
- [Matrix Exponentiation](#matrix-exponentiation)↵
- [Miscellaneous](#miscellaneous)↵
- [Prefix and Suffix Trees](#prefix-and-suffix-trees)↵
- [Segment Trees](#segment-trees)↵
- [Trees](#trees)↵
↵
## Binary and Ternary Search↵
---↵
*Binary Search : The process of exploiting the property of an array of being sorted to arrive at answers of questions in non linear time.*↵
↵
*Ternary Search : The process of exploiting the property of a function having double diffrential of a constant sign to arrive to results in non linear time.*↵
↵
- Theory↵
↵
- [Hackerearth](https://www.hackerearth.com/notes/power-of-binary-search/) — Power of Binary search by [Aman Goel](https://www.hackerearth.com/users/amangoel.vsec/) (Easy).↵
↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) — Binary Search by [lovro](https://www.topcoder.com/member-profile/lovro/) (Hard).↵
↵
- [Ternary Search](http://rendon.x10.mx/ternary-search/) — Blog Post on Ternary Search.↵
↵
- Questions on↵
↵
- [Codeforces](http://codeforces.me/problemset/tags/binary%20search)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=40)↵
↵
- [Codechef](https://discuss.codechef.com/tags/binarysearch/)↵
↵
## Dynamic Programming↵
---↵
*Used to solve questions which can be broken down into smaller sub problems.It involves the technique of saving the result of a problem for future reference.*↵
↵
- Theory↵
↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) — Dynamic Programming from Novice to Advanced.↵
↵
- [Codechef](https://www.codechef.com/wiki/tutorial-dynamic-programming) — Tutorial on Dynamic Programming.↵
↵
- Questions on↵
↵
- [Hackerrank](https://www.hackerrank.com/domains/algorithms/dynamic-programming)↵
↵
- [spoj](http://problemclassifier.appspot.com/?keywords=dp)↵
↵
- [More Problems on SPOJ](http://apps.topcoder.com/forums/;jsessionid=C684F032169B7439C8012AAB6BA2018C?module=Thread&threadID=674592)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=33)↵
↵
- [Codeforces](http://codeforces.me/problemset/tags/dp)↵
↵
## Flow↵
---↵
↵
- Theory↵
↵
- [Topcoder — Max Flow Part 1](https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-section-1/)↵
↵
- [Topcoder — Max Flow Part 2](https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-section-2/)↵
↵
- Questions↵
↵
- [spoj](http://problemclassifier.appspot.com/?keywords=flow)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=12)↵
↵
## Game Theory↵
---↵
*Used to solve problems involving mathematical modelling of conflict and cooperation among rational players.*↵
↵
- Theory↵
- [Stanford](http://web.stanford.edu/class/cs97si/05-combinatorial-games.pdf) — PDF on Combinatorial Games.↵
- [Wikipedia](https://en.wikipedia.org/wiki/Nim) — Introduction to Nim Games.↵
↵
- [Book](http://www.cs.ox.ac.uk/files/2735/Composite_games.pdf) — Composite Mathematical Games.↵
↵
- [Book](http://www.math.ucla.edu/~tom/Game_Theory/comb.pdf) — Game Theory By Thomas S. Ferguson.↵
↵
- [Wikipedia](https://en.wikipedia.org/wiki/Sprague%E2%80%93Grundy_theorem) — Sprague Grundy Theorem.↵
↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/algorithm-games/) — Introduction to Algorithmic Games.↵
↵
- Questions on ↵
- [A2oj](http://a2oj.com/Category.jsp?ID=91)↵
↵
## Graphs↵
---↵
*A graph consists of nodes and the interconnection between them.The problems involve finding shortest distance, connectivity and flow.* ↵
↵
- Theory↵
↵
- [Topcoder](https://topcoder.com)↵
↵
- [Identifying a graph on Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-1/)↵
↵
- [Searching in a Graph](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-2/)↵
↵
- [Path Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-3/)↵
↵
- [Codeforces](http://codeforces.me/blog/entry/16221) — Important Graph Algorithms by [PrinceOfPersia](http://codeforces.me/profile/PrinceOfPersia)↵
↵
- [Codechef](https://www.codechef.com/wiki/tutorial-graph-theory-part-1) — Tutorial on Graph Theory — part 1↵
↵
- Questions on↵
↵
- [Codeforces](http://codeforces.me/problemset/tags/graphs)↵
↵
- [Codechef](https://discuss.codechef.com/tags/graph/)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=13)↵
↵
## Greedy↵
---↵
*Greedy problems involve solving a problem statement considering the most greedy, i.e. most optimal solution at the given time without taking into consideration the future effects of it.*↵
↵
- Theory↵
↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/greedy-is-good/) — Greedy is Good.↵
↵
- [Stackoverflow.](http://stackoverflow.com/questions/7887487/how-to-spot-a-greedy-algorithm) — Tutorial on how to spot a greedy algorithm.↵
↵
- [Hackerearth](https://www.hackerearth.com/notes/greedy-algorithm/) — Tutorial on greedy algorithms by [Akash Sharma](https://www.hackerearth.com/users/r3gz3n/).↵
↵
- Questions on↵
↵
- [Codeforces](http://codeforces.me/problemset/tags/greedy)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=56)↵
↵
## Maths↵
---↵
*Problem related to mathematics are quite common in the domain of competitive programming.It involved topics like geometry, algebra, discrete mathematics and probability.*↵
↵
- Theory↵
↵
- [Stanford](http://web.stanford.edu/class/cs97si/02-mathematics.pdf) — Stanford's Guide on Introduction To Competitive Programming.↵
↵
- [Aduni](http://www.aduni.org/courses/discrete/index.php?view=cw) — Course Guide to Discrete Mathematics.↵
↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/understanding-probabilities/) — Understanding Probability.↵
↵
- Questions on ↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=86)↵
↵
- [Codechef](https://discuss.codechef.com/tags/simple-math/) — Basic↵
↵
- [Codechef](https://discuss.codechef.com/tags/maths/) — Advanced↵
↵
## Matrix Exponentiation↵
---↵
*Used to solve problems which involve finding a solution to a given series by using exponentiation property on multiplication of matrices.The complexity is thus reduced to logrithmic from linear.*↵
↵
- Theory↵
↵
- [zobayer](http://zobayer.blogspot.in/2010/11/matrix-exponentiation.html) — Introduction to Matrix exponentiations↵
↵
- [Quora](https://threads-iiith.quora.com/Solving-Dynamic-Programming-with-Matrix-Exponentiation) — Solving Dynamic Programming with Matrix Exponentiation.↵
↵
- Questions on↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=32)↵
↵
## Miscellaneous↵
---↵
↵
- Mo's Algorithm↵
- [Blog Post By Anudeep Nekkanti](http://blog.anudeep2011.com/mos-algorithm/)↵
↵
- [Hackerearth](https://www.hackerearth.com/notes/mos-algorithm/)↵
↵
- [DQUERY on Spoj](http://www.spoj.com/problems/DQUERY/en/)↵
↵
- [FREQUENT on Spoj](http://www.spoj.com/problems/FREQUENT/)↵
↵
- Persistant Segment Trees↵
- [Blog Post By Anudeep Nekkanti](http://blog.anudeep2011.com/persistent-segment-trees-explained-with-spoj-problems/)↵
- [MKTHNUM on Spoj](http://www.spoj.com/problems/MKTHNUM/en/)↵
↵
- Mobius Function↵
- [Dance With Mobius Function by Surya Kiran](https://www.quora.com/profile/Surya-Kiran/Posts/A-Dance-with-Mobius-Function)↵
↵
- Treaps↵
- [Codeforces](http://codeforces.me/blog/entry/11148)↵
↵
- [Wikipedia](https://en.wikipedia.org/wiki/Treap)↵
↵
- [TREAP on Spoj](http://www.spoj.com/problems/TREAP/)↵
↵
- Bit Manipulation↵
- [Hackerearth](https://www.hackerearth.com/notes/bit-manipulation/) — Tutorial on Bit Manipulation by [Prateek Garg](https://www.hackerearth.com/users/ptk23/).↵
↵
- [Hackerrank](https://www.hackerrank.com/domains/algorithms/bit-manipulation) — Questions On Hackerrank on bit manipulation.↵
↵
- Other Resources↵
- [Data Structures](http://codeforces.me/blog/entry/15729) — A guide to high level data structures by [PrinceOfPersia](http://codeforces.me/profile/PrinceOfPersia)↵
↵
## Prefix and Suffix Trees↵
---↵
*Tries are some kind of rooted trees in which each edge has a character on it.*↵
↵
- Theory↵
↵
- [Wikipedia](https://en.wikipedia.org/wiki/Trie) — Introduction to Tries.↵
↵
- [Marknelson](http://marknelson.us/1996/08/01/suffix-trees/) — Tutorial on prefix and suffix trees by Sartaj Sahni↵
↵
- [Marknelson](http://marknelson.us/1996/08/01/suffix-trees/) — Suffix Trees Explained.↵
↵
- Questions on↵
↵
- [Codechef](https://www.codechef.com/problems/TWSTR/)↵
↵
- [Another problem on Codechef](https://www.codechef.com/SEPT13/problems/TMP01)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=49)↵
↵
## Segment Trees↵
---↵
*Segment tree is a tree for which each node represents an interval.*↵
↵
- Theory↵
↵
- [Hackerearth](https://www.hackerearth.com/notes/segment-trees-for-beginners/) — Segment trees for Beginners by [Ayush Agrawal](https://www.hackerearth.com/users/ayusha1107/).↵
↵
- [Codeforces](http://codeforces.me/blog/entry/15890) — Everything about Segment trees by [PrinceOfPersia](http://codeforces.me/profile/PrinceOfPersia)↵
↵
- [Lazy Propogation](http://se7so.blogspot.in/2012/12/segment-trees-and-lazy-propagation.html) — Solving problems related to updation of segment tree in logrithmic time (also known as lazy propogation).↵
↵
- Questions on↵
↵
- [Codechef](https://discuss.codechef.com/tags/segment-tree/)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=25)↵
↵
## Trees↵
---↵
*A tree is a data structure made up of nodes or vertices and edges without having any cycle.*↵
↵
- Theory↵
↵
- [Hackerearth](https://www.hackerearth.com/notes/trees/) — Baisc introduction to trees and terminologies related to it by [Anuj Garg](https://www.hackerearth.com/users/anuj09garg/)↵
↵
- [Wikipedia](https://en.wikipedia.org/wiki/Tree_(data_structure)) — Tree (data structure)↵
↵
- Questions on↵
↵
- [Hackerrank](https://www.hackerrank.com/domains/data-structures/trees)↵
↵
- [Codechef](https://discuss.codechef.com/tags/trees/)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=89)↵
↵
- [Codeforces](http://codeforces.me/problemset/tags/trees)
It is open sourced [here](https://github.com/hkirat/awesome-competitive-coding)↵
Thought of sharing it here too!↵
↵
# Awesome Competitive Coding [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)↵
↵
A Curated list of Topic wise Theory and Questions to Get You Started On Competitive Coding.↵
↵
*Inspired by the [awesome](https://github.com/sindresorhus/awesome) list thing. You might also like to read complete [awesome-list](https://github.com/sindresorhus/awesome).*↵
↵
### Contributing↵
Kindly Go Through [Contribution Guidelines](https://github.com/hkirat/awesome-competitive-coding/blob/master/CONTRIBUTING.md) First.↵
↵
Topics↵
---↵
- [Binary and Ternary Search](#binary-and-ternary-search)↵
- [Dynamic Programming](#dynamic-programming)↵
- [Flow](#flow)↵
- [Game Theory](#game-theory)↵
- [Graphs](#graphs)↵
- [Greedy](#greedy)↵
- [Maths](#maths)↵
- [Matrix Exponentiation](#matrix-exponentiation)↵
- [Miscellaneous](#miscellaneous)↵
- [Prefix and Suffix Trees](#prefix-and-suffix-trees)↵
- [Segment Trees](#segment-trees)↵
- [Trees](#trees)↵
↵
## Binary and Ternary Search↵
---↵
*Binary Search : The process of exploiting the property of an array of being sorted to arrive at answers of questions in non linear time.*↵
↵
*Ternary Search : The process of exploiting the property of a function having double diffrential of a constant sign to arrive to results in non linear time.*↵
↵
- Theory↵
↵
- [Hackerearth](https://www.hackerearth.com/notes/power-of-binary-search/) — Power of Binary search by [Aman Goel](https://www.hackerearth.com/users/amangoel.vsec/) (Easy).↵
↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) — Binary Search by [lovro](https://www.topcoder.com/member-profile/lovro/) (Hard).↵
↵
- [Ternary Search](http://rendon.x10.mx/ternary-search/) — Blog Post on Ternary Search.↵
↵
- Questions on↵
↵
- [Codeforces](http://codeforces.me/problemset/tags/binary%20search)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=40)↵
↵
- [Codechef](https://discuss.codechef.com/tags/binarysearch/)↵
↵
## Dynamic Programming↵
---↵
*Used to solve questions which can be broken down into smaller sub problems.It involves the technique of saving the result of a problem for future reference.*↵
↵
- Theory↵
↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) — Dynamic Programming from Novice to Advanced.↵
↵
- [Codechef](https://www.codechef.com/wiki/tutorial-dynamic-programming) — Tutorial on Dynamic Programming.↵
↵
- Questions on↵
↵
- [Hackerrank](https://www.hackerrank.com/domains/algorithms/dynamic-programming)↵
↵
- [spoj](http://problemclassifier.appspot.com/?keywords=dp)↵
↵
- [More Problems on SPOJ](http://apps.topcoder.com/forums/;jsessionid=C684F032169B7439C8012AAB6BA2018C?module=Thread&threadID=674592)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=33)↵
↵
- [Codeforces](http://codeforces.me/problemset/tags/dp)↵
↵
## Flow↵
---↵
↵
- Theory↵
↵
- [Topcoder — Max Flow Part 1](https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-section-1/)↵
↵
- [Topcoder — Max Flow Part 2](https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-section-2/)↵
↵
- Questions↵
↵
- [spoj](http://problemclassifier.appspot.com/?keywords=flow)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=12)↵
↵
## Game Theory↵
---↵
*Used to solve problems involving mathematical modelling of conflict and cooperation among rational players.*↵
↵
- Theory↵
- [Stanford](http://web.stanford.edu/class/cs97si/05-combinatorial-games.pdf) — PDF on Combinatorial Games.↵
- [Wikipedia](https://en.wikipedia.org/wiki/Nim) — Introduction to Nim Games.↵
↵
- [Book](http://www.cs.ox.ac.uk/files/2735/Composite_games.pdf) — Composite Mathematical Games.↵
↵
- [Book](http://www.math.ucla.edu/~tom/Game_Theory/comb.pdf) — Game Theory By Thomas S. Ferguson.↵
↵
- [Wikipedia](https://en.wikipedia.org/wiki/Sprague%E2%80%93Grundy_theorem) — Sprague Grundy Theorem.↵
↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/algorithm-games/) — Introduction to Algorithmic Games.↵
↵
- Questions on ↵
- [A2oj](http://a2oj.com/Category.jsp?ID=91)↵
↵
## Graphs↵
---↵
*A graph consists of nodes and the interconnection between them.The problems involve finding shortest distance, connectivity and flow.* ↵
↵
- Theory↵
↵
- [Topcoder](https://topcoder.com)↵
↵
- [Identifying a graph on Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-1/)↵
↵
- [Searching in a Graph](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-2/)↵
↵
- [Path Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-3/)↵
↵
- [Codeforces](http://codeforces.me/blog/entry/16221) — Important Graph Algorithms by [PrinceOfPersia](http://codeforces.me/profile/PrinceOfPersia)↵
↵
- [Codechef](https://www.codechef.com/wiki/tutorial-graph-theory-part-1) — Tutorial on Graph Theory — part 1↵
↵
- Questions on↵
↵
- [Codeforces](http://codeforces.me/problemset/tags/graphs)↵
↵
- [Codechef](https://discuss.codechef.com/tags/graph/)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=13)↵
↵
## Greedy↵
---↵
*Greedy problems involve solving a problem statement considering the most greedy, i.e. most optimal solution at the given time without taking into consideration the future effects of it.*↵
↵
- Theory↵
↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/greedy-is-good/) — Greedy is Good.↵
↵
- [Stackoverflow.](http://stackoverflow.com/questions/7887487/how-to-spot-a-greedy-algorithm) — Tutorial on how to spot a greedy algorithm.↵
↵
- [Hackerearth](https://www.hackerearth.com/notes/greedy-algorithm/) — Tutorial on greedy algorithms by [Akash Sharma](https://www.hackerearth.com/users/r3gz3n/).↵
↵
- Questions on↵
↵
- [Codeforces](http://codeforces.me/problemset/tags/greedy)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=56)↵
↵
## Maths↵
---↵
*Problem related to mathematics are quite common in the domain of competitive programming.It involved topics like geometry, algebra, discrete mathematics and probability.*↵
↵
- Theory↵
↵
- [Stanford](http://web.stanford.edu/class/cs97si/02-mathematics.pdf) — Stanford's Guide on Introduction To Competitive Programming.↵
↵
- [Aduni](http://www.aduni.org/courses/discrete/index.php?view=cw) — Course Guide to Discrete Mathematics.↵
↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/understanding-probabilities/) — Understanding Probability.↵
↵
- Questions on ↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=86)↵
↵
- [Codechef](https://discuss.codechef.com/tags/simple-math/) — Basic↵
↵
- [Codechef](https://discuss.codechef.com/tags/maths/) — Advanced↵
↵
## Matrix Exponentiation↵
---↵
*Used to solve problems which involve finding a solution to a given series by using exponentiation property on multiplication of matrices.The complexity is thus reduced to logrithmic from linear.*↵
↵
- Theory↵
↵
- [zobayer](http://zobayer.blogspot.in/2010/11/matrix-exponentiation.html) — Introduction to Matrix exponentiations↵
↵
- [Quora](https://threads-iiith.quora.com/Solving-Dynamic-Programming-with-Matrix-Exponentiation) — Solving Dynamic Programming with Matrix Exponentiation.↵
↵
- Questions on↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=32)↵
↵
## Miscellaneous↵
---↵
↵
- Mo's Algorithm↵
- [Blog Post By Anudeep Nekkanti](http://blog.anudeep2011.com/mos-algorithm/)↵
↵
- [Hackerearth](https://www.hackerearth.com/notes/mos-algorithm/)↵
↵
- [DQUERY on Spoj](http://www.spoj.com/problems/DQUERY/en/)↵
↵
- [FREQUENT on Spoj](http://www.spoj.com/problems/FREQUENT/)↵
↵
- Persistant Segment Trees↵
- [Blog Post By Anudeep Nekkanti](http://blog.anudeep2011.com/persistent-segment-trees-explained-with-spoj-problems/)↵
- [MKTHNUM on Spoj](http://www.spoj.com/problems/MKTHNUM/en/)↵
↵
- Mobius Function↵
- [Dance With Mobius Function by Surya Kiran](https://www.quora.com/profile/Surya-Kiran/Posts/A-Dance-with-Mobius-Function)↵
↵
- Treaps↵
- [Codeforces](http://codeforces.me/blog/entry/11148)↵
↵
- [Wikipedia](https://en.wikipedia.org/wiki/Treap)↵
↵
- [TREAP on Spoj](http://www.spoj.com/problems/TREAP/)↵
↵
- Bit Manipulation↵
- [Hackerearth](https://www.hackerearth.com/notes/bit-manipulation/) — Tutorial on Bit Manipulation by [Prateek Garg](https://www.hackerearth.com/users/ptk23/).↵
↵
- [Hackerrank](https://www.hackerrank.com/domains/algorithms/bit-manipulation) — Questions On Hackerrank on bit manipulation.↵
↵
- Other Resources↵
- [Data Structures](http://codeforces.me/blog/entry/15729) — A guide to high level data structures by [PrinceOfPersia](http://codeforces.me/profile/PrinceOfPersia)↵
↵
## Prefix and Suffix Trees↵
---↵
*Tries are some kind of rooted trees in which each edge has a character on it.*↵
↵
- Theory↵
↵
- [Wikipedia](https://en.wikipedia.org/wiki/Trie) — Introduction to Tries.↵
↵
- [Marknelson](http://marknelson.us/1996/08/01/suffix-trees/) — Tutorial on prefix and suffix trees by Sartaj Sahni↵
↵
- [Marknelson](http://marknelson.us/1996/08/01/suffix-trees/) — Suffix Trees Explained.↵
↵
- Questions on↵
↵
- [Codechef](https://www.codechef.com/problems/TWSTR/)↵
↵
- [Another problem on Codechef](https://www.codechef.com/SEPT13/problems/TMP01)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=49)↵
↵
## Segment Trees↵
---↵
*Segment tree is a tree for which each node represents an interval.*↵
↵
- Theory↵
↵
- [Hackerearth](https://www.hackerearth.com/notes/segment-trees-for-beginners/) — Segment trees for Beginners by [Ayush Agrawal](https://www.hackerearth.com/users/ayusha1107/).↵
↵
- [Codeforces](http://codeforces.me/blog/entry/15890) — Everything about Segment trees by [PrinceOfPersia](http://codeforces.me/profile/PrinceOfPersia)↵
↵
- [Lazy Propogation](http://se7so.blogspot.in/2012/12/segment-trees-and-lazy-propagation.html) — Solving problems related to updation of segment tree in logrithmic time (also known as lazy propogation).↵
↵
- Questions on↵
↵
- [Codechef](https://discuss.codechef.com/tags/segment-tree/)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=25)↵
↵
## Trees↵
---↵
*A tree is a data structure made up of nodes or vertices and edges without having any cycle.*↵
↵
- Theory↵
↵
- [Hackerearth](https://www.hackerearth.com/notes/trees/) — Baisc introduction to trees and terminologies related to it by [Anuj Garg](https://www.hackerearth.com/users/anuj09garg/)↵
↵
- [Wikipedia](https://en.wikipedia.org/wiki/Tree_(data_structure)) — Tree (data structure)↵
↵
- Questions on↵
↵
- [Hackerrank](https://www.hackerrank.com/domains/data-structures/trees)↵
↵
- [Codechef](https://discuss.codechef.com/tags/trees/)↵
↵
- [A2oj](http://a2oj.com/Category.jsp?ID=89)↵
↵
- [Codeforces](http://codeforces.me/problemset/tags/trees)