Unity3D综合技术交流群:836901775
public static int MaxAncestorDiff(TreeNode root)
{
List<int> rList = new List<int>();
TraverseFoward(root, rList);
rList.Sort();
return rList[rList.Count - 1];
}
//前序遍历找到每个节点
public static void TraverseFoward(TreeNode node, List<int> rList)
{
rList.Add(MaxDiff_OneNode(node));
if (node.left != null) TraverseFoward(node.left, rList);
if (node.right != null) TraverseFoward(node.right, rList);
}
//求一个节点的最大差值
public static int MaxDiff_OneNode(TreeNode node)
{
int max = 0;
if (node != null)
{
List<int> tList = new List<int>();
tList.Add(node.val);
GetChildDiffVale(node, tList);
for (int i = 1; i < tList.Count; i++)
{
if (tList[i] > max) max = tList[i];
}
}
return max;
}
public static void GetChildDiffVale(TreeNode node, List<int> tList)
{
if (node.left != null)
{
tList.Add(Math.Abs(tList[0] - node.left.val));
GetChildDiffVale(node.left, tList);
}
if (node.right != null)
{
tList.Add(Math.Abs(tList[0] - node.right.val));
GetChildDiffVale(node.right, tList);
}
}