Binary Tree Tilt
来源:互联网 发布:同和行知职业技术学校 编辑:程序博客网 时间:2024/06/11 03:52
题目:计算各节点左右子树的差值的绝对值之和。
例如:
节点1:|2- (3+4)| = 5
节点2:0
节点3:|4 - 0| = 4
节点4:0
所以Tilt等于9
然后搬出羞耻的解题方案。。我直接对每个节点遍历一遍然后对其左右子树计算总和差值。。代码如下:
class Solution {public: int findTilt(TreeNode* root) { if(!root) return 0; stack<TreeNode*> s; s.push(root); while(!s.empty()) { TreeNode* node = s.top(); filt += compute(node); s.pop(); if(node->left) s.push(node->left); if(node->right) s.push(node->right); } return filt; } int compute(TreeNode* root) { if(!root) return 0; int left_sum = 0, right_sum = 0; queue<TreeNode*> lefq, rigq; if(root->left) lefq.push(root->left); while(!lefq.empty()) { TreeNode* lnode = lefq.front(); lefq.pop(); left_sum += lnode->val; if(lnode->left) lefq.push(lnode->left); if(lnode->right) lefq.push(lnode->right); } if(root->right) rigq.push(root->right); while(!rigq.empty()) { TreeNode* rnode = rigq.front(); rigq.pop(); right_sum += rnode->val; if(rnode->left) rigq.push(rnode->left); if(rnode->right) rigq.push(rnode->right); } return abs(left_sum - right_sum); }private: int filt = 0;};
然后观摩大神,居然可以用postorder traversal(后序遍历),原因是可以先把孩子们遍历一遍。
主要的函数:
int postorder(TreeNode* root){ if(!root) return 0; int left = postorder(root-left); int right = postorder(root>right); res += abs(left - right); return left + right + root->val;//此处的返回只对于孩子节点有效,把孩子节点所有数值累加}
阅读全文
0 0
- 563. Binary Tree Tilt
- Binary Tree Tilt
- Binary Tree Tilt
- Binary Tree Tilt
- 563. Binary Tree Tilt **
- 563. Binary Tree Tilt
- 563. Binary Tree Tilt
- 563. Binary Tree Tilt
- 563. Binary Tree Tilt
- 563. Binary Tree Tilt
- 563. Binary Tree Tilt
- 563. Binary Tree Tilt
- 563. Binary Tree Tilt
- 563. Binary Tree Tilt
- 563. Binary Tree Tilt
- LeetCode Binary Tree Tilt
- 563. Binary Tree Tilt
- 563. Binary Tree Tilt
- LeetCode笔记:(Java) 9. Palindrome Number
- java中String、StringBuffer、StringBuilder的区别
- Android 手机卫士(4) 包名/版本号/版本名的获取
- ListView 缓存机制源码浅析
- HDU-5493---Queue (线段树)
- Binary Tree Tilt
- 20170914
- 高阶函数
- 卡特兰数(Catalan)
- MFC picture 控件error RC2108: expected numerical dialog constant
- 为何要用番茄工作法(笔记)
- 03 Hiernate常见错误
- BZOJ 2744: [HEOI2012]朋友圈
- 正阅读微信小说分销系统-视频教程-1.渠道商-公众号配置-基础信息