代码随想录day16 二叉树

111. 二叉树的最小深度

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

递归的所有运算都在出栈的时候进行运算

func minDepth(root *TreeNode) int {
     if root ==nil{ return 0}
     if root.Left ==nil && root.Right!=nil{
       return 1+ minDepth(root.Right)
     }
     if root.Right == nil && root.Left!=nil{
       return 1+ minDepth(root.Left)
     }
     return min(minDepth(root.Left), minDepth(root.Right))+1
}

func min(a ,b int) int{
  if a >b{
    return b
  }
  return a
}

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

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

func countNodes(root *TreeNode) int {
    if root ==nil{ return 0}
    res:=1
    if root.Right!=nil{
        res+=countNodes(root.Right)
    }
    if root.Left!=nil{
        res+=countNodes(root.Left)
    }
    return res
}

104. 二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

func maxDepth(root *TreeNode) int {
    if root == nil{ return 0}
    return max(maxDepth(root.Left), maxDepth(root.Right) ) +1 
}

func max(a ,b int)int{
    if a>b{
        return a
    }
    return b
}

你可能感兴趣的:(算法,数据结构)