二叉树的直径,即二叉树中一个节点到另一个节点的最大路径
采用分治和递归的思想:根节点为root的二叉树的直径 = Max(左子树直径,右子树直径,左子树的最大深度(不包括根节点)+右子树的最大深度(不包括根节点))
private int diameter = 0;
private int DiameterofBinaryTree(Algorithm.TreeNode head)
{
GetDepth(head);
return diameter;
}
//求二叉树的最大深度
private int GetDepth(Algorithm.TreeNode node)
{
if (node == null)
return 0;
int l = GetDepth(node.left);
int r = GetDepth(node.right);
diameter = Mathf.Max(diameter, l + r);
return Mathf.Max(l, r) + 1;
}