一道面试题

mac2024-10-14  57

一道面试题: 求一棵树中任意两个结点的最远距离。 思想: 利用递归,在求深度的同时顺带把最远距离算出来。 思路如下:

struct node { vector<node*> child; vector<int> distance; } int MaxDepth(node * root, int *MaxSum) { if (root == NULL) return 0; vector<int> temp(root->child.size(),0); for(int i=0;i<root->child.size();i++) { if(root->child[i]!=NULL) { temp[i] = MaxDepth(root->child[i], MaxSum) + root->value[i]; } } sort(temp);//从大到小 int sum = tem[0] + temp[1]; *MaxSum = (*MaxSum > sum)?*MaxSum:sum; return temp[0]; }
最新回复(0)