第六章 二叉树part03

由 Greyson 发布

104.二叉树的最大深度

  • 二叉树
/**
 * Definition for a Node.
 * type Node struct {
 *     Val int
 *     Children []*Node
 * }
 */
var res int
var dept int
func dfs(root *Node) {
    if root == nil {
        return
    }
    dept++
    res = max(res, dept)
    dfs(root.Left)
    dfs(root.Right)
    dept--
}
func maxDepth(root *Node) int {
    res = 0
    dept = 0
    dfs(root)
    return res
}
  • N叉树
/**
 * Definition for a Node.
 * type Node struct {
 *     Val int
 *     Children []*Node
 * }
 */
var res int
var dept int
func dfs(root *Node) {
    if root == nil {
        return
    }
    dept++
    res = max(res, dept)
    for i := 0; i < len(root.Children); i++ {
        dfs(root.Children[i])
    }
    dept--
}
func maxDepth(root *Node) int {
    res = 0
    dept = 0
    dfs(root)
    return res
}

111.二叉树的最小深度

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
var res int
var dept int
func dfs(root *TreeNode) {
    if root == nil { 
        return
    }
    dept++
    dfs(root.Left)
    dfs(root.Right)
    if root.Left == nil && root.Right == nil {
        res = min(res, dept)
    }
    dept--
}
func minDepth(root *TreeNode) int {
    res = 100010
    dept = 0
    dfs(root)
    if root == nil {
        res = 0
    }
    return res
}

222.完全二叉树的节点个数

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
var count int
func dfs (root *TreeNode) {
    if root == nil {
        return
    }
    count++
    dfs(root.Left)
    dfs(root.Right)
}
func countNodes(root *TreeNode) int {
    count = 0
    dfs(root)
    return count
}

扫描二维码,在手机上阅读
收藏

0条评论

发表评论


验证码