I am trying to solve Kth ancestor using binary lifting
But i am getting WA.
Description:
We need to solve the kth ancestor method
, GIven a root of a tree, we need to find the kth ancestor of node.
class Tree
{
int N=(int)1e4+5;
int dp[][]=new int[N][31];
int parent[]=new int[N];
void dfs(Node root,int p)
{
if(root==null)
return;
parent[root.data]=p;
dfs(root.left,root.data);
dfs(root.right,root.data);
}
void construct(int u,int v)
{
dp[u][0] = v;
for(int i=1;i<31;i++)
{
dp[u][i]=dp[dp[u][i-1]][i-1];
if(dp[u][i]==-1)
break;
}
}
public int kthAncestor(Node root, int k, int node)
{
for(int i=0;i<N;i++)
Arrays.fill(dp[i],-1);
Arrays.fill(parent,-1);
dfs(root,-1);
for(int i=0;i<N;i++)
{
if(parent[i]!=-1)
construct(i,parent[i]);
}
for(int i=30;i>=0;i--)
{
if(((1<<i)&k)!=0){
node=dp[node][i];
if(node==-1)
break;
}
}
return node;
}
}
Can anyone explain where i am going wrong? Thank you )
@everule1