标签:max Sum Leaves Deepest ans 层数 null root 节点
目录层数最深叶子节点的和 Deepest Leaves Sum
一棵二叉树的根节点root
,返回层数最深的叶子节点的和。
in: root = [1,2,3,4,5,null,6,7,null,null,null,null,8]
out:15
思路
对树的处理基本就是 DFS,BFS。
看到一个非常有意思的思路,通过dfs递归求解,递归方法中需要有一个当前节点node,和当前节点node的深度。同样在外部我们还要有一个max_deep来记录最深的层数,以及一个记录结果的ans。
每次进入递归方法时,除了边界条件外,还要将节点的层数与最大的深度进行比较如果当前的节点深度比记录的max还要大,说明我们已经找到了一个更深的节点,将之前的max_deep更新,并将当前的节点值保存到ans。如果我们遇到的节点与当前记录的最大深度一致,那么就加入ans。
时间复杂度O(n) n是节点数。空间复杂度O(H)即树深度,当然最差情况下也是O(n)
int max_deep,ans;
public void getResult(TreeNode root ,int k ){
if(root==null){
return ;
}
if(k == max_deep){
ans += root.val;//找到同样深度的node,val相加
}
if(k>max_deep){
max_k = k;
ans = root.val;//找到更深的node,val覆盖
}
getResult(root.left,k+1);
getResult(root.right,k+1);
return;
}
public int deepestLeavesSum(TreeNode root) {
getResult(root,0);
return ans;
}
Tag
Tree
,DFS
标签:max,Sum,Leaves,Deepest,ans,层数,null,root,节点 来源: https://www.cnblogs.com/dreamtaker/p/15423053.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。