### Coding Interview Questions Set 2

**For first 3 questions and answers please refer to Coding Interview Questions Set 1.**

**Let's begin with set 2,**

**4)For a given binary tree find the depth/height of a binary tree.**

**Solution**:

var depth= function(root) {

if(root === undefined || root===null){

return 0;

}

return Math.max(depth(root.left),depth(root.right)) + 1;

};

**Logic:**

Divide and conquer.

**5)In a given array move all the 0 's to the end without disturbing order of non-zero elements.**

**Solution:**

var moveZeroes = function(nums) {

for(var i = nums.length;i--;){

if(nums[i]===0){

nums.splice(i,1)

nums.push(0);

}

}

};

**Logic:**

Remove each 0 and add 0 at the end of the array.

**6)Calculate the sum of 2 integers without using + and - operator.**

**Solution:**

var add = function(a, b) {

let carry;

while(b) {

carry = a & b;

a ^= b;

b = carry << 1;

}

return a;

};

**Logic:**

Example a=5 and b=1

The AND will only return 1 when both are 1

Step a)

& operator

101

001

001(that's 1 carry)

Step b)

^ operator

101

001

100(that's 4)

but 5+1 = 6, not four.

That's because we have a carry.

In binary, xor or ^ will add digits (but doesn't care about overflow/carry).

The ^ will return 1 when both are different

So a=4;

Step c)

Now we re-declare b as carry << 1, so it becomes 010 or 2,

i.e 001<<1=010

Again repeat step a,b, and c until b becomes 0.

step a) with updated values of a and b,

100

010

000(That's 0 carry)

Step b)

100

010

110 (That's 6)

So a=6;

Step c)

000<<1 =0;

So here b becomes 0;

We return value of a that is 6 as the answer.

I hope you like this article.

Please stay connected for coding interview questions set 3.

**Saurabh Joshi**

## Comments

## Post a Comment