Vue——兩分鐘概述 Vue 是一個JavaScript 框架。 在其最簡單的模式中,您可以簡單地將核心 Vue 腳本包含在您的應用程式中,然後開始構建您的組件。 除此之外,對於更複雜的應用程式,您可以使用 Vue 自己的 CLI 創建(並最終發佈)一個 Vue 項目。 與大多數其他 JavaS ...
題目描述
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/deepest-leaves-sum/
給你一棵二叉樹的根節點 root ,請你返回 層數最深的葉子節點的和 。
題目分析
本題需要遍歷樹找到層數最深的葉子節點,所以可以分為兩種方式 深度優先搜索和廣度優先搜索。
深度優先搜索(DFS)
通過遞歸尋找每個最深的節點,並將他們的數值進行累加。
public int DeepestLeavesSum(TreeNode root)
{
int maxLenth = 0;
int sum = 0;
DFS(root, 1);
return sum;
void DFS(TreeNode node, int lenth)
{
if (node == null) return;
if (lenth > maxLenth)
{
maxLenth = lenth;
sum = node.val;
}
else if (lenth == maxLenth)
{
sum += node.val;
}
DFS(node.left, lenth + 1);
DFS(node.right, lenth + 1);
}
}
廣度優先搜索(BFS)
迭代讀取每層的數值,則最後一次迴圈讀取的必定是深度最高的節點,所以每次迴圈開始的時候將節點和置為0即可。
public int DeepestLeavesSum2(TreeNode root)
{
int sum = 0;
Queue<TreeNode> queue = new Queue<TreeNode>();
queue.Enqueue(root);
while (queue.Count > 0)
{
sum = 0;
int size = queue.Count;
for (int i = 0; i < size; i++)
{
TreeNode node = queue.Dequeue();
sum += node.val;
if (node.left != null)
{
queue.Enqueue(node.left);
}
if (node.right != null)
{
queue.Enqueue(node.right);
}
}
}
return sum;
}