来源
描述
给定一棵二叉树,找到这棵树最中最后一行中最左边的值。
样例
输入:[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
更多学习笔记见个人博客------>呼延十