nileshpatel7048
BAN USERpackage com.salesforce;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPrintSequence {
public static void main(String[] args) {
ExecutorService threadPool = Executors.newFixedThreadPool(3);
PrintNumber one = new PrintNumber("1");
PrintNumber two = new PrintNumber("2", one);
PrintNumber three = new PrintNumber("3", two);
one.parent = three;
threadPool.execute(one);
threadPool.execute(two);
threadPool.execute(three);
}
}
class PrintNumber implements Runnable {
public String number;
public Runnable parent;
public PrintNumber(String number ){
this.number = number;
}
public PrintNumber(String number , Runnable parent){
this.number = number;
this.parent = parent;
}
public void run(){
while (true) {
try {
System.out.println(number);
synchronized (this) {
notify();
}
synchronized (parent) {
parent.wait();
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalMonitorStateException ex) {
ex.printStackTrace();
}
}
}
}
package com.tree;
import java.util.ArrayDeque;
import java.util.Queue;
class PrintSameLevelTree {
public static void main(String args[]) {
com.TreeNode root = com.TreeNode.getTree1();
printSameLevel(root);
}
public static void printSameLevel(com.TreeNode root){
Queue<com.TreeNode> queue = new ArrayDeque<com.TreeNode>();
com.TreeNode marker = new com.TreeNode("-1");
queue.add(root);
queue.add(marker);
while(!queue.isEmpty()) {
while(!queue.peek().data.equalsIgnoreCase("-1")) {
com.TreeNode node = queue.poll();
System.out.print(node + " ");
if(node.left != null ) queue.add(node.left);
if(node.right != null ) queue.add(node.right);
}
queue.poll();
if(!queue.isEmpty()) {
queue.add(marker);
}
System.out.println(" ");
}
}
}
public class LongestPath {
public static int max = 0;
public static void main(String args[]){
com.TreeNode tree = com.TreeNode.getLongestPathTree();
findLongest(tree,0);
System.out.println("Max " + max);
}
public static int findLongest(com.TreeNode node, int depth){
if(node.left == null && node.right == null) {
if(depth==0) depth++;
return depth;
}
int rdepth=0 ,ldepth =0;
if(node.left != null) {
ldepth = findLongest(node.left , depth+1);
}
if(node.right != null) {
rdepth = findLongest(node.right , depth+1);
}
int localMax = rdepth+ldepth-depth+1;
max = (max>localMax)?max:localMax;
return Math.max(ldepth,rdepth);
}
}
For now printed all results on screen , we can store it in list/set.
public static void finCombination(int[] input , int index){
int tmp;
if(index == (input.length-1)) {
System.out.println(i);
return;
}
for(int i=index; i<input.length;i++) {
tmp = input[index];
input[index] = input[i];
input[i] = tmp;
finCombination(input,index+1);
}
}
Whats time complexity of it? O(nlogn) ?
- nileshpatel7048 October 19, 2014public static void printSameLevel(TreeNode root){
//Create empty queue
Queue<TreeNode> queue = new ArrayDeque<TreeNode>();
TreeNode marker = new TreeNode("-1");
queue.add(root);
//Add marker for level
queue.add(marker);
while(!queue.isEmpty()) {
//loop till reach at marker
while(!queue.peek().data.equalsIgnoreCase("-1")) {
TreeNode node = queue.poll();
System.out.print(node + " ");
if(node.left != null ) queue.add(node.left);
if(node.right != null ) queue.add(node.right);
}
queue.poll();
//Add marker if queue not empty.
if(!queue.isEmpty()) {
queue.add(marker);
}
System.out.println(" ");
}
}
public class FindInorderSuccesor {
static TreeNode succesor = null;
static Set<TreeNode> set = new HashSet<TreeNode>();
/*
* Traverse node from by right - center - left
* Assign value from buffer as succesor
*/
public static void doFind(TreeNode root) {
if(root.right != null) {
doFind(root.right);
}
//Assign succesor from buffer
if(succesor == null) {
root.succesor = succesor;
} else {
if(!set.contains(root.succesor)) {
root.succesor = succesor;
}
}
set.add(root);
succesor = root;
if(root.left != null) {
doFind(root.left);
}
}
- nileshpatel7048 May 21, 2015