今日中等題:https://leetcode.cn/problems/find-bottom-left-tree-value/
終于走出舒適區(qū)開(kāi)始做樹(shù)相關(guān)的題目了衬以,開(kāi)始因?yàn)閷?duì)概念不熟悉看完題目是懵逼的,但是再看題解的深度優(yōu)先和廣度優(yōu)先的算法后校摩,突然發(fā)現(xiàn)不過(guò)如此hhhh看峻,用雙向隊(duì)列就能解決的問(wèn)題。
queue和deque的區(qū)別
具體對(duì)比差異詳見(jiàn):https://blog.csdn.net/SeekN/article/details/114231727
貼下代碼:
/**
* 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) {
Deque<TreeNode> deque = new ArrayDeque<TreeNode>();
deque.offer(root);
int ans = 0;
while (!deque.isEmpty()) {
TreeNode cur = deque.poll();
// 從右到左衙吩,確保左節(jié)點(diǎn)是最后一個(gè)
if (cur.right != null) {
deque.offer(cur.right);
}
if (cur.left != null) {
deque.offer(cur.left);
}
ans = cur.val;
}
return ans;
}
}