Go 二叉树和基本操作

Posted 小明的编程笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 二叉树和基本操作相关的知识,希望对你有一定的参考价值。

对于数据结构来说,二叉树绝对是使用和讨论最多的一种结构,我们试着用Go语言描述二叉树

  1. 判断二叉树是否是平衡二叉树

  2. 二叉树的最大深度

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 二叉树和基本操作的主要内容,如果未能解决你的问题,请参考以下文章

数据结构学习笔记——广义表以及树和二叉树的基本知识

go语言浅析二叉树

Python数据结构系列☀️《树与二叉树-基础知识》——知识点讲解+代码实现☀️

C/C++数据结构-完整代码队列Queue(树和二叉树)(二叉树代码实现)

数据结构学习笔记——广义表树和二叉树的基本知识

完美二叉树, 完全二叉树和完满二叉树(国内教材到处是坑啊)