算法—leetcode—104

90 阅读1分钟

题目

  1. 二叉树的最大深度

题目描述

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

二叉树的深度

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

说明

叶子节点是指没有子节点的节点。

思路

1.如果根节点为nil,则深度为0
2.否则计算左右子数的深度 3.找出左右子数深度最大的,然后+1
4.递归执行2/3两个步骤即可计算树的最大深度

示例

data := &TreeNode{
	Val:3,
	Left:&TreeNode{
		Val:9,
	},
	Right:&TreeNode{
		Val:20,
		Left:&TreeNode{Val:15},
		Right:&TreeNode{Val:7},
	},
}

data := &TreeNode{
	Val:1,
	Left:&TreeNode{
		Val:2,
		Left:&TreeNode{
			Val:3,
			Left:&TreeNode{Val:4},
			Right:&TreeNode{Val:4},
		},
		Right:&TreeNode{Val:3},
	},
	Right:&TreeNode{
		Val:2,
	},
}

代码

package leetcode

type TreeNode struct {
	Val   int
	Left  *TreeNode
	Right *TreeNode
}

// maxDepth
// 二叉树深度
func maxDepth(root *TreeNode) int {
    if root == nil {
        return 0
    }
    return max(maxDepth(root.Left), maxDepth(root.Right)) + 1
}

func max(left, right int) int {
    if left > right {
        return left
    }
    return right
}

参考

来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/ba…
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。