今天是第16天刷leetcode,立个flag,打卡60天。
算法挑战链接
第一想法
题目理解:找到最后一层的最左边的节点的值。
第一想法就是使用层序遍历,每一次遍历的时候会将这一层的最左边的拿出来就行
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int findBottomLeftValue(TreeNode root) {
int result = root.val;
Queue<TreeNode> treeNodes = new ArrayDeque<>();
treeNodes.add(root);
while (! treeNodes.isEmpty()) {
int size = treeNodes.size();
result = treeNodes.peek().val;
for (int i = 0; i < size; i++) {
TreeNode node = treeNodes.poll();
if (node.left != null) {
treeNodes.add(node.left);
}
if (node.right != null) {
treeNodes.add(node.right);
}
}
}
return result;
}
}
看完代码随想录之后的想法
相差不大,另外提供了递归的做法。
实现过程中遇到哪些困难
无,只是将之前层序遍历在写了一遍
今日收获
无