二叉树--倒序层序遍历求二叉树树左下角的值
Posted 算法和数据结构
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树--倒序层序遍历求二叉树树左下角的值相关的知识,希望对你有一定的参考价值。
来源:LeetCode
难度:中等
描述:
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。
示例1:
示例2:
分析:
题目其实就是让咱们找到二叉树最下面那一层的第一个节点,正常的方法是采用层序遍历的方式,挨个将二叉树的每一层节点放入队列中,并且在遍历每层的时候取每层第一个节点值替换原结果,直到遍历完即可
这里介绍一种从右往左的层序遍历方式,即先将根节点的右节点放入队列,再将左节点放入队列,那么最下面那一层的第一个节点一定是队列中最后遍历的节点,因此咱们在遍历的过程中只需要挨个替换即可,无需任何判断
解题
方法一:倒序层序遍历
思路:如分析,利用一个队列,将每层节点从右到左挨个放入队列,依次遍历队列每个节点,最后一个节点就是结果值
代码:
1public int findBottomLeftValue(TreeNode root) {
2 if (root.left == null && root.right == null) {
3 return root.val;
4 }
5 Queue<TreeNode> queue = new LinkedList<>();
6 queue.offer(root);
7 int ans = root.val;
8
9 while (!queue.isEmpty()) {
10 TreeNode temp = queue.poll();
11 ans = temp.val;
12
13 if (temp.right != null) {
14 // 先把右节点加入 queue
15 queue.offer(temp.right);
16 }
17 if (temp.left != null) {
18 // 再把左节点加入 queue
19 queue.offer(temp.left);
20 }
21 }
22 return ans;
23}
时间复杂度:O(n)
空间复杂度:O(max_width) max_width为节点个数最多的那一层节点数
以上仅是个人思路解法,觉得还不错欢迎点赞关注分享
往期精彩推荐
以上是关于二叉树--倒序层序遍历求二叉树树左下角的值的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点# 面试必刷TOP101:求二叉树的层序遍历