假如有如下图所示的数据结构:

转换成为 js 代码为如下构造:

const chainNode = {  value: 1,  left: {    value: 2,    left: {      value: 4,      left: {        value: 7      }    }  },  right: {    value: 3,    left: {      value: 5,      left: {        value: 8      }    },    right: {      value: 6,      left: {        value: 9      },      right: {        value: 10      }    }  }}

求所有链条数字之和,如下所示:
1 + 2 + 4 + 7 +
1 + 3 + 5 + 8 +
1 + 3 + 6 + 9 +
1 + 3 + 6 + 10

解题思路:
1、如上图所示共有 4 个末端节点别离为 7 、8 、9 、10
2、求末端节点以及其父节点的总和 currentChainSum 并叠加到最终总和 total 里

function getChainSum(chainNode) {      // 总和      let total = 0       // 叠加计算器      const accumulator = (chainNode, prevChainSum = 0) => {        const {value, left, right} = chainNode        // 以后节点的值 + 以后节点的所有父节点之和        const currentChainSum = value + prevChainSum        // 如果有 left 节点则持续叠加        left && accumulator(left, currentChainSum)        // 如果有 right 节点则持续叠加        right && accumulator(right, currentChainSum)        // 当节点达到末端时叠加总和        if (!left && !right) {          total += currentChainSum        }      }      accumulator(chainNode)      return total    }