力扣第1302题:层数最深的叶子节点(DFS算法)
Posted 少๑渊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣第1302题:层数最深的叶子节点(DFS算法)相关的知识,希望对你有一定的参考价值。
一、题目内容
二、题目分析
很简单的题目,通过dfs获取树的高度,然后再判断当前叶子节点高度是否等于树的高度,是就让结果值加上叶子节点的值,否则就遍历左右子树。
三、代码
/**
* 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 {
static int ans=0;
public int deepestLeavesSum(TreeNode root) {
int h=height(root);
System.out.print(h);
dfs(root,1,h);
return ans;
}
public int height(TreeNode root)
{
if(root.left!=null&&root.right==null)
return height(root.left)+1;
else if(root.left==null&&root.right!=null)
return height(root.right)+1;
else if(root.left!=null&&root.right!=null)
return Math.max(height(root.left)+1,height(root.right)+1);
else return 1;
}
public void dfs(TreeNode root,int nowh,int h){
if(nowh==h){
ans+=root.val;
return;
}
if(root.left!=null)
dfs(root.left,nowh+1,h);
if(root.right!=null)
dfs(root.right,nowh+1,h);
}
}
以上是关于力扣第1302题:层数最深的叶子节点(DFS算法)的主要内容,如果未能解决你的问题,请参考以下文章