Go 二叉树和基本操作
Posted 小明的编程笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
}
以上是关于Go 二叉树和基本操作的主要内容,如果未能解决你的问题,请参考以下文章
Python数据结构系列☀️《树与二叉树-基础知识》——知识点讲解+代码实现☀️