sl2574@cornell.edu
BAN USERpublic static ArrayList<linkedlist> printTheMaxSumPathOfBinaryTree(treeNode root){
if(root == null) return null;
ArrayList<linkedlist> l = printTheMaxSumPathOfBinaryTree(root.left);
ArrayList<linkedlist> r = printTheMaxSumPathOfBinaryTree(root.right);
if(l == null && r == null) {
linkedlist n = new linkedlist();
n.appendToTheFront(root.data);
ArrayList<linkedlist> arr = new ArrayList<linkedlist>();
arr.add(n);
return arr;
}else if(l == null && r != null){
for(int i=0;i<r.size();i++){
r.get(i).appendToTheFront(root.data);
}
return r;
}else if(l != null && r == null){
for(int i=0;i<l.size();i++){
l.get(i).appendToTheFront(root.data);
}
return l;
}else{
if(l.get(0).sum > r.get(0).sum) {
for(int i=0;i<l.size();i++){
l.get(i).appendToTheFront(root.data);
}
return l;
}else if(l.get(0).sum < r.get(0).sum){
for(int i=0;i<r.size();i++){
r.get(i).appendToTheFront(root.data);
}
return r;
}else{
for(int i=0;i<l.size();i++){
l.get(i).appendToTheFront(root.data);
}
for(int i=0;i<r.size();i++){
r.get(i).appendToTheFront(root.data);
}
l.addAll(r);
return l;
}
}
public static int findKthElementinBSTInTimeOfLogN(treeNode root,int k){
int[] arr = BSTintoArray(root);
if(k>arr.length) return -1;
return arr[k-1];
}
public static int[] BSTintoArray(treeNode root){
if(root==null) return null;
int[] left = BSTintoArray(root.left);
int[] right = BSTintoArray(root.right);
int l_length = 0;
int r_length = 0;
if(left!=null) l_length = left.length;
if(right!=null)r_length = right.length;
int[] left_new = new int[l_length+1+r_length];
left_new[l_length]=root.data;
if(left!=null){
System.arraycopy(left, 0, left_new, 0, l_length);
}
if(right!=null){
System.arraycopy(right, 0, left_new, l_length+1, r_length);
}
return left_new;
}
public static ArrayList<String> stringPermutation(String s){
- sl2574@cornell.edu February 04, 2013if (s==null){
return null;
}
String first = s.substring(0,1);
String rest = null;
if(s.length() != 1){
rest = s.substring(1);
}
ArrayList<String> list = stringPermutation(rest);
ArrayList<String> permutation = new ArrayList<String>();
if(list == null) permutation.add(first);
else{
for(String str : list){
for(int i=0; i<str.length()+1; i++){
permutation.add(mutation(first,str,i));
}
}
}
return permutation;
}
public static String mutation(String ch, String s, int index){
if (index == 0) return ch + s;
else{
return s.substring(0,index) + ch + s.substring(index);
}
}