列表

详情


面试题 04.04. 检查平衡性

实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。


示例 1:
给定二叉树 [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回 true 。
示例 2:
给定二叉树 [1,2,2,3,3,null,null,4,4]
1
/ \
2 2
/ \
3 3
/ \
4 4
返回 false 。

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isBalanced(TreeNode* root) { } };

golang 解法, 执行用时: 8 ms, 内存消耗: 5.7 MB, 提交时间: 2021-06-22 14:46:17

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func isBalanced(root *TreeNode) bool {
    height := helper(root)
    return height >= 0
}

func helper(node *TreeNode) int {
    if node == nil {
        return 0
    }
    left := helper(node.Left)
    if left == -1 {
        return -1
    }
    right := helper(node.Right) 
    if right == -1 {
        return -1
    }
    if abs(left-right) <= 1 {
        return max(left, right) + 1
    }
    return -1
}

func max(x, y int) int {
	if x > y {
		return x
	}
	return y
}

func min(x, y int) int {
	if x > y {
		return y
	}
	return x
}

func abs(x int) int {
	if x < 0 {
		return -x
	}
	return x
}

golang 解法, 执行用时: 8 ms, 内存消耗: 5.7 MB, 提交时间: 2021-06-22 14:45:12

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func isBalanced(root *TreeNode) bool {
    height := helper(root)
    return height != -1
}

func helper(node *TreeNode) int {
    if node == nil {
        return 0
    }
    left := helper(node.Left)
    if left == -1 {
        return -1
    }
    right := helper(node.Right) 
    if right == -1 {
        return -1
    }
    if abs(left-right) <= 1 {
        return max(left, right) + 1
    }
    return -1
}

func max(x, y int) int {
	if x > y {
		return x
	}
	return y
}

func min(x, y int) int {
	if x > y {
		return y
	}
	return x
}

func abs(x int) int {
	if x < 0 {
		return -x
	}
	return x
}

上一题