static void UpdateAugmentedData(HeightTreeNode node, UpdateAfterChildrenChangeRecursionMode mode) { int totalCount = 1; double totalHeight = node.lineNode.TotalHeight; if (node.left != null) { totalCount += node.left.totalCount; totalHeight += node.left.totalHeight; } if (node.right != null) { totalCount += node.right.totalCount; totalHeight += node.right.totalHeight; } if (node.IsDirectlyCollapsed) { totalHeight = 0; } if (totalCount != node.totalCount || !totalHeight.IsClose(node.totalHeight) || mode == UpdateAfterChildrenChangeRecursionMode.WholeBranch) { node.totalCount = totalCount; node.totalHeight = totalHeight; if (node.parent != null && mode != UpdateAfterChildrenChangeRecursionMode.None) { UpdateAugmentedData(node.parent, mode); } } }
static void UpdateAugmentedData(HeightTreeNode node, UpdateAfterChildrenChangeRecursionMode mode) { int totalCount = 1; double totalHeight = node.lineNode.TotalHeight; if (node.left != null) { totalCount += node.left.totalCount; totalHeight += node.left.totalHeight; } if (node.right != null) { totalCount += node.right.totalCount; totalHeight += node.right.totalHeight; } if (node.IsDirectlyCollapsed) totalHeight = 0; if (totalCount != node.totalCount || !totalHeight.IsClose(node.totalHeight) || mode == UpdateAfterChildrenChangeRecursionMode.WholeBranch) { node.totalCount = totalCount; node.totalHeight = totalHeight; if (node.parent != null && mode != UpdateAfterChildrenChangeRecursionMode.None) UpdateAugmentedData(node.parent, mode); } }