搜索

leetcode563. 二叉树的坡度。 - ᶜʸᵃⁿ -


发布时间: 2022-11-24 17:53:01    浏览次数:52 次

563. 二叉树的坡度

 

二叉树大部分题目都可以用递归解决。为了满足一般性,即使题目初试没有的情况,子问题有的,也要考虑。

递归就考虑当前的情况就行了,不要再考虑上一层或者下一层。

下面这个做法是把计算值和、计算坡度分开,时间复杂度n^2,一开始做的时候就一直在想n的情况,就没有写出来。

class Solution { public: int sum(TreeNode* root) { if(root==nullptr) return 0; return root->val+sum(root->left)+sum(root->right); } int findTilt(TreeNode* root) { if(root==nullptr) return 0; return abs(sum(root->left)-sum(root->right))+findTilt(root->left)+findTilt(root->right); } };

下面是时间效率最高的解法:

class Solution { public: int res=0; int dfs(TreeNode* root) { if(root==nullptr) return 0; int left=dfs(root->left); int right=dfs(root->right); res+=abs(left-right); return root->val+left+right; } int findTilt(TreeNode* root) { dfs(root); return res; } };

 

免责声明 leetcode563. 二叉树的坡度。 - ᶜʸᵃⁿ - ,资源类别:文本, 浏览次数:52 次, 文件大小:-- , 由本站蜘蛛搜索收录2022-11-24 05:53:01。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://www.cnblogs.com/uacs2024/p/16915534.html