[每日一题]-LintCode-寻找树中最左下节点的值

来源

lintcode-寻找树中最左下节点的值

描述

给定一棵二叉树,找到这棵树最中最后一行中最左边的值。

样例

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

解题思路

首先这道题一看就是层次遍历,这里帮大家回顾下二叉树的层次遍历.二叉树介绍及其前中后遍历实现.

然后这里要求得最左边的值,那么怎么才能知道当前拿到的节点是不是最后一个节点呢?

再想一下,我们平时的层次遍历拿到的是什么样子的呢?

拿到的是从左到右的顺序,那么最后一个节点,就是最右下角的节点,那么,每一层从右向左遍历,最后一个就是最左的节点啦!

实现代码

/**
 * 寻找树中最左下角的值
 * @param root
 * @return
 */
public int findBottomLeftValue(TreeNode root) {
  TreeNode cur = null;
  //队列
  Queue<TreeNode> queue = new LinkedList();
  //根节点入队
  queue.offer(root);
  while(!queue.isEmpty()){
    //出队一个元素
    cur = queue.poll();
    //按顺序入队其右孩子和左孩子
    if(cur.right != null)
      queue.offer(cur.right);  
    if(cur.left != null)
      queue.offer(cur.left);
  }
  //所有元素出队后拿到的就是最后一个节点,返回
  return cur.val;
}

完.





ChangeLog
2018-12-19 完成

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客------>呼延十

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值