Go 二叉树和基本操作
对于数据结构来说,二叉树绝对是使用和讨论最多的一种结构,我们试着用Go语言描述二叉树
判断二叉树是否是平衡二叉树
二叉树的最大深度
package main
import "math"
type TreeNode struct {
Left *TreeNode
data int
Right *TreeNode
}
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func isBalanced(root *TreeNode) bool {
if root == nil {
return true
}
return math.Abs(float64(maxDepth(root.Left)) - float64(maxDepth(root.Right))) <= 1 &&
isBalanced(root.Left) && isBalanced(root.Right)
}
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func maxDepth(root *TreeNode) int {
if root == nil {
return 0
}
return 1 + max(maxDepth(root.Left), maxDepth(root.Right))
}
func max(l, r int) int {
if l > r {
return l
}
return r
}