Here is my code to serialize and de-serialize tree github
// main.cpp
// tree
//
// Created by harish divakaran on 2/13/12.
//
#include <iostream>
using namespace std;
struct TreeNode
{
TreeNode *left;
TreeNode *right;
int value;
TreeNode() { value = 0; left = NULL; right = NULL; }
};
class Tree
{
private:
TreeNode *head;
void __inorder(TreeNode *t);
void __preorder(TreeNode *t);
void __postorder(TreeNode *t);
void __insertNode(TreeNode* &t, int val);
bool __deleteNode(TreeNode* &node, int value);
public:
Tree() { head = NULL;}
void inOrder() { __inorder(head); }
void preOrder() { __preorder(head); }
void postOrder() { __postorder(head); }
void insertNode(int value) { __insertNode(head, value); }
bool deleteNode( int value) { return __deleteNode(head, value);}
};
void Tree::__inorder(TreeNode *t)
{
if(t)
{
__inorder(t->left);
cout<<t->value<<endl;
__inorder(t->right);
}
}
void Tree::__preorder(TreeNode *t)
{
if(t)
{
cout<<t->value<<endl;
__preorder(t->left);
__preorder(t->right);
}
}
void Tree::__postorder(TreeNode *t)
{
if(t)
{
__postorder(t->left);
__postorder(t->right);
cout<<t->value<<endl;
}
}
void Tree::__insertNode(TreeNode* &t, int val)
{
TreeNode *newNode = new TreeNode;
newNode->value = val;
if(t == NULL)
{
t = newNode;
}
else if(val < t->value)
{
__insertNode(t->left, val);
}
else __insertNode(t->right, val);
}
bool Tree::__deleteNode(TreeNode* &node, int value)
{
bool retVal = false;
if(node == NULL)
{
retVal = true;
}
else if(node->value == value)
{
// now we need to delete the root node
if(node->left == NULL && node->left == NULL)
{
TreeNode *tempNode = node;
node = NULL;
delete tempNode;
retVal = true;
}
else if(node->left == NULL)
{
TreeNode *tempNode = node;
node = node->right;
delete tempNode;
retVal = true;
}
else if(node->right == NULL)
{
TreeNode *tempNode = node;
node = node->left;
delete tempNode;
retVal = true;
}
else
{
// now we need to find find the inorder successor
TreeNode *nextNode = node->right;
TreeNode *parentNode = node;
while(nextNode->left == NULL)
{
parentNode = nextNode;
nextNode = nextNode->left;
}
// now we need to change data of node
node->value = nextNode->value;
// now delete next Node
retVal = __deleteNode(nextNode, value);
}
}
else if(node->value > value)
{
retVal = __deleteNode(node->left, value);
}
else
{
retVal = __deleteNode(node->right, value);
}
return retVal;
}
int main (int argc, const char * argv[])
{
// insert code here...
Tree *t = new Tree();
int a[10] = {99,1,56,23,45,2,10,12,67,98};
for(int i = 0; i < 10; i ++)
t->insertNode(a[i]);
t->inOrder();
t->deleteNode(45);
t->deleteNode(99);
t->inOrder();
return 0;
}
int checkPal(char s[])
{
int i,k;
int max;
max = strlen(s) - 1;
for(i = 0,k=max;i < k; i++,k--)
if(s[i] != s[k] ) return 0;
return 1;
}
int reverseString(char s[], int low, int high)
{
int i,k;
i = low;
k = high;
for(; i <k ; i++, k--)
{
char ch;
ch = s[i];
s[i] = s[k];
s[k] = ch;
}
}
void reverseWords(char s[])
{
reverseString(s,0,strlen(s) -1 );
while(*s)
{
int wordlen;
char *startWord;
wordlen = 0;
while(*s == ' ' && *s) s++; // skip white space
startWord = s;
while(*s!= ' ' && *s) s++,wordlen++;
reverseString(startWord,0,wordlen-1);
}
}
My brother asked me to reverse words in a sentence. He accused me of cheating by not writing an actual algorithm, but here is the solution I came up in a minute.
' '.join(s.split()[::-1])
harish-macbook:~ h_divakaran$ python Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> s = "how are you" >>> ' '.join(s.split()[::-1]) 'you are how' >>>
class Node
{
public int data;
public Node next;
public Node()
{
data = 0;
next = null;
}
}
class Linkedlist
{
private Node head;
public LinkedList()
{
head = null;
}
public void Add(Node n)
{
n.next = head;
head = n;
}
public void PrintList()
{
Node temp;
temp = head;
while(temp != null)
{
Console.WriteLine("{0}",data);
temp = temp.next;
}
}
public void Reverse()
{
Node temp = null;
Node newhead = null;
while(head)
{
temp = head.next;
head.next = newhead;
newhead = head;
head = temp;
}
head = newhead;
}
}
C#
public static string Reverse(string s)
{
char [] sbArray = s.ToCharArray();
int len = s.Length;
int middle = len/2;
for (int i = 0; i < middle; i ++)
{
char ch = sbArray[i];
sbArray[i] = sbArray[(len - 1) - i];
sbArray[(len - 1) -i] = ch;
}
return new string(sbArray);
}
Still C#, but using string builder
public static string Reverse(string s)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.Length ; i ++)
{
sb.Append(s[s.Length - 1 - i]);
}
return sb.ToString();
}
Python
def Reverse(s):
return s[::-1]
I have been using Git a lot lately across different machines. Everytime I branch I create a tracking branch. Here is the command I use.
git branch —track version20 origin/version20
This mean local version20 will track remote version20
Very interesting rules from GoDaddy founder.
http://blogs.wsj.com/wealth/2011/06/24/a-new-billionaires-10-rules-for-success/
My favorite rule in this is number 5.
5. Be quick to decide.
“Remember what General George S. Patton said: ‘A good plan violently executed today is far and away better than a perfect plan tomorrow.’ ”
I did this a lot, searching for perfect plan, now I have come to realize executing an imperfect plan is much better than searching for the perfect plan and having no product in the end.
Here is the bigger version of the rules from Bob Parsons’ website
My facebook app peoplegraph is now in the app store.
Peoplegraph Q&A from app store.
Q. What is Peoplegraph ?
A. Peoplegraph is a Facebook app for iPad.
Q. What is the difference between other Facebook apps and Peoplegraph ?
A. Most Facebook apps for iPad are a skin over touch.facebook.com. Peoplegraph has own renderings and is a native app. There is option in Peoplegraph to access touch.facebook.com if you prefer that.
Q. Is Peoplegraph secure ?
A. Yes, all the data transfer happens between Facebook and iPad, Peoplegraph doesn’t store data or send data to any website other than Facebook.com. Peoplegraph does cache images in your iPad to improve user experience.
May 2012 M T W T F S S « Apr 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Recent Comments
- Abhilash Divakaran on Reverse words in sentence
- JK on Facebook: creating test accounts
- Harish Divakaran on WordPress and EC2 so far
- Zach Weg on WordPress and EC2 so far
