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;
}