この質問はインタビューで尋ねられました: 黒と白のノードを持つツリーが与えられます。指定されたツリー内の白いノードの最長パスを見つけます。以下のアプローチは正しいですか、誰かがより良いアプローチを手伝ってくれますありがとう!
int Longest(node root, int max)
{
if(root==null || root.color == black)
return 0;
if(root.color == white)
{
int curmax =1+ firstlongest(root.child) + secondlongest(root.child);
if(curmax>max)
max = curmax;
return curmax;
}
if(root.color == black)
{
for(all children)
{
int curmax =1+ firstlongest(root.child) + secondlongest(root.child);
}
if(curmax>max)
max =curmax;
return 0;
}
}
int firstlongest(node* child){//will calculate first longest of children and similarly
secondlongest gives second.Finally max will have length of longest path.