deleting node from doubly linked list circular doubly linked lists inserting new node in circular doubly linked list deleting node from circular doubly linked list header linked lists multi-linked lists applications of linked lists polynomial representation stacks introduction to stacks array representation of stacks operations on stack push operation pop operation peek operation linked representation of stacks operations on linked stack push operation pop operation multiple stacks applications of stacks reversing list implementing parentheses checker evaluation of arithmetic expressions recursion queues introduction to queues array representation of queues linked representation of queues types of queues circular queues deques priority queues multiple queues applications of queues trees introduction basic terminology types of trees general trees forests binary trees binary search trees expression trees tournament trees creating binary tree from general tree traversing binary tree pre-order traversal in-order traversal post-order traversal level-order traversal constructing binary tree from traversal results huffman' tree applications of trees efficient binary trees binary search trees operations on binary search trees searching for node in binary search tree inserting new node in binary search tree deleting node from binary search tree determining the height of binary search tree determining the number of nodes finding the mirror image of binary search tree finding the smallest node in binary search tree finding the largest node in binary search tree threaded binary trees traversing threaded binary tree