1) Find deepest node of a binary tree
(Karumanchi, pg 120)
2) Find height of a binary tree (recursion method)
(Karumanchi, pg 119 , with small correction)
3) Find height of binary tree (non recursion)
(Karumanchi, pg 120, with small correction)
4) Find Least Common Ancestor of 2 nodes in a binary tree
(Karumanchi, pg 126)
https://www.youtube.com/watch?v=13m9ZCB8gjw
5) Find Least Common Ancestor of 2 nodes in a binary SEARCH tree
(Karumanchi, pg 153)
6) Find Shortest path of 2 nodes in a binary SEARCH tree
(Hint: Find LCA and then calculate path from LCA to each node)
7) Determine if a Binary Tree is a Binary Search Tree
http://leetcode.com/2010/09/determine-if-binary-tree-is-binary.html
(Karumanchi : pg 155, prob 52)
8) Serialize and Deserialize a Binary Tree
http://www.geeksforgeeks.org/serialize-deserialize-binary-tree/
http://www.careercup.com/question?id=6228581160058880
http://leetcode.com/2010/09/serializationdeserialization-of-binary.html
8 b) Serialize and Deserialize a Binary Search Tree
https://www.youtube.com/watch?v=H594EV9OuDI
http://leetcode.com/2010/09/saving-binary-search-tree-to-file.html
9) Given a string of html tags like “< a >< b >< c >< /c >< d >< /d >< a >< /a >< /b >< /a >“, construct a tree where each node is like
Node { string tag, ArrayOfChildren[] };
Note that the tree need not be binary tree.
This was asked in SugarCRM.
BuildTree(root, parent) { tag = readTag(); // assume function readTag will output each tag serially if (isOpenTag(tag)) { node = new Node; // create a new Node node.tag = tag; Stack.push(node); // push into stack if (root == NULL) { root = node; } elseif (parent != NULL) { AddChild(parent, node); BuildTree(root, node); // Build tree with node as parent } else { // error } } else { temp = Stack.pop(); if (Stack.NotEmpty()) { parent = Stack.pop; BuildTree(root, parent); } } return root; }