算法:
这一类题目很简单,不过却是树的最基本操作之一,引申为判断树是不是平衡二叉树。
一般做法是,计算二叉树的左右子树的高度+1,然后取它们的最大值或者最小值。
题目1:
https://leetcode-cn.com/problems/balanced-binary-tree/
代码实现:
/** * Definition for a binary tree node. * type TreeNode struct {
* Val int * Left *TreeNode * Right *TreeNode * } */ // 一棵平衡二叉树,左右两棵子树的高度差的绝对值不超过1 // 备注:其中任意一个节点如果不满足平衡二叉树时,那么这棵树就不是平衡二叉树了,此时我们可以直接返回flasefunc isBalanced(root *TreeNode) bool {
if root == nil { // nil表示的是平衡二叉树 return true } // 1.用来计算当前节点的左右子树高度差是1 lH := maxDepth(root.Left) rH := maxDepth(root.Ri