《leetcode-go》判断二叉树是否为平衡二叉树

判断给定的二叉树是否是平衡二叉树

平衡二叉树的性质为: 要么是一棵空树,要么任何一个节点的左右子树高度差的绝对值不超过 1。

一颗树的高度指的是树的根节点到所有节点的距离中的最大值。

思路:判断每个节点的深度,左右节点进行比较,深度遍历来实现

package main
/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
  * 
  * @param root TreeNode类 
  * @return bool布尔型
*/
func isBalanced(root *TreeNode) bool {
	// write code here
	if root == nil {
		return true
	}
	ok, _ := GetDepth(root)
	return ok
}
func GetDepth(root *TreeNode) (bool, int) {
	if root == nil {
		return true, 0
	}
	depth := 0
	leftIs, leftDepth := GetDepth(root.Left)
	rightIs, rightDepth := GetDepth(root.Right)
	if leftIs && rightIs && leftDepth-rightDepth <= 1 && leftDepth-rightDepth >= -1 {
		depth = rightDepth + 1
		if leftDepth > rightDepth {
			depth = leftDepth + 1
		}
		return true, depth
	}
	return false, 0
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值