从sapphire转UA,多长时间才post?# Money - 海外理财
K*k
1 楼
定义直径为连通两节点最多的边数
空树和单节点树的直径都是0
直径有可能通过根节点,也可能通过某棵子树的根节点但不通过根节点。
利用经典的求二叉树高度的递归函数,同时保持直径的最大值,就可以了么?
// The initial value of diameter is set to 0
int Depth(Node* root, int& diameter)
{
if (root == NULL)
return 0;
int LDepth = Depth(root->left, diameter);
int RDepth = Depth(root->right, diameter);
if (LDepth + RDepth > diameter)
diameter = LDepth + RDepth;
return max(LDepth + 1, RDepth + 1);
}
空树和单节点树的直径都是0
直径有可能通过根节点,也可能通过某棵子树的根节点但不通过根节点。
利用经典的求二叉树高度的递归函数,同时保持直径的最大值,就可以了么?
// The initial value of diameter is set to 0
int Depth(Node* root, int& diameter)
{
if (root == NULL)
return 0;
int LDepth = Depth(root->left, diameter);
int RDepth = Depth(root->right, diameter);
if (LDepth + RDepth > diameter)
diameter = LDepth + RDepth;
return max(LDepth + 1, RDepth + 1);
}