Google 面试题 | 找二叉树最底层最左边的节点

专栏 | 九章算法

网址 | http://www.jiuzhang.com

题目描述

给一棵二叉树,求出该二叉树最底层最左边的节点。

样例:

默认标题_自定义px_2018.01.31.png

算法分析

这题有2个做法,一是宽度优先搜索,用每层的第一个节点来更新答案。二是深度优先搜索,当遇到一个节点的深度大于目前维护的最大深度时用这个节点来更新答案。

  1. 使用宽度优先搜索bfs,用每层的第一个节点更新Ans。时间复杂度O(n)。

  2. 使用深度优先搜索dfs,当我们第一次访问一个深度为depth的节点x(之前只访问过深度小于depth的节点)时,x一定是depth深度的最左节点,用这个节点更新Ans。即我们维护一个最大深度,当遍历到一个点的深度大于最大深度时,用这个节点来更新答案,并更新最大深度即可。时间复杂度O(n)。

参考程序

www.jiuzhang.com/solution/fi…

面试官角度分析

这道题是一道简单难度题,考点是基础数据结构二叉树和在二叉树中的搜索,用bfs和dfs均可。给出正确算法即可达到hire。lintcode相关问题

QQ截图20180131175409.png

www.lintcode.com/zh-cn/probl…

欢迎关注我的微信公众号:九章算法(ninechapter)。
精英程序员交流社区,定期发布面试题、面试技巧、求职信息等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值