平衡二叉树是任意结点的左右子树高度差绝对值都不大于1的二叉搜索树
    题目:判断是否是平衡二叉树
    思路: 递归对每个节点进行验证

    1. const isBalanced = function(root) {
    2. // 立一个flag,只要有一个高度差绝对值大于1,这个flag就会被置为false
    3. let flag = true
    4. // 定义递归逻辑
    5. function dfs(root) {
    6. // 如果是空树,高度记为0;如果flag已经false了,那么就没必要往下走了,直接return
    7. if(!root || !flag) {
    8. return 0
    9. }
    10. // 计算左子树的高度
    11. const left = dfs(root.left)
    12. // 计算右子树的高度
    13. const right = dfs(root.right)
    14. // 如果左右子树的高度差绝对值大于1,flag就破功了
    15. if(Math.abs(left-right) > 1) {
    16. flag = false
    17. // 后面再发生什么已经不重要了,返回一个不影响回溯计算的值
    18. return 0
    19. }
    20. // 返回当前子树的高度
    21. return Math.max(left, right) + 1
    22. }
    23. // 递归入口
    24. dfs(root)
    25. // 返回flag的值
    26. return flag
    27. };