摒弃世俗浮躁
追求技术精湛

【力扣】513. 找树左下角的值

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

示例 1:

输入: root = [2,1,3]
输出: 1

示例 2:

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7

提示:

  • 二叉树的节点个数的范围是 [1,104]
  • -231 <= Node.val <= 231 - 1 

题解:

递归法:

func findBottomLeftValue(root *TreeNode) int {
	var result, depth int
	var dfs func(node *TreeNode, d int)
	dfs = func(node *TreeNode, d int) {
		if node == nil {
			return
		}
		if node.Left == nil && node.Right == nil && depth < d {
			depth = d
			result = node.Val
		}
		dfs(node.Left, d+1)
		dfs(node.Right, d+1)
	}
	dfs(root, 1)
	return result
}

迭代法(队列):

func findBottomLeftValue(root *TreeNode) int {
	if root == nil {
		return 0
	}
	var result int
	queue := list.New()
	queue.PushBack(root)
	for queue.Len() > 0 {
		length := queue.Len()
		for i := 0; i < length; i++ {
			node := queue.Remove(queue.Front()).(*TreeNode)
			if i == 0 {
				result = node.Val
			}
			if node.Left != nil {
				queue.PushBack(node.Left)
			}
			if node.Right != nil {
				queue.PushBack(node.Right)
			}
		}
	}
	return result
}
赞(0) 打赏
未经允许不得转载:时光日记 » 【力扣】513. 找树左下角的值

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册