Subtree with Maximum Average
来源:互联网 发布:兄弟连java 编辑:程序博客网 时间:2024/05/16 23:56
Given a binary tree, find the subtree with maximum average. Return the root of the subtree.
python:一定要注意,除法的精度问题。leetcode中不一定使用的是python3.X
"""Definition of TreeNode:class TreeNode: def __init__(self, val): this.val = val this.left, this.right = None, None"""class Solution: # @param {TreeNode} root the root of binary tree # @return {TreeNode} the root of the maximum average of subtree avg, node = 0, None def findSubtree2(self, root): # Write your code here if root is None: return None self.getSubtree(root) return self.node; def getSubtree(self, root): if root is None: return 0, 0 sumLeft, countLeft = self.getSubtree(root.left) sumRight, countRight = self.getSubtree(root.right) sumRoot = sumLeft + sumRight + root.val countRoot = countLeft + countRight + 1 average = sumRoot * 1.0 / countRoot if self.node is None or average > self.avg: self.avg = average self.node = root return sumRoot, countRoot
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */class ResultType { public int sum; public int count; public double avg; public TreeNode node; public ResultType(int sum, int count, double avg, TreeNode node) { this.sum = sum; this.count = count; this.node = node; this.avg = avg; }}public class Solution { /** * @param root the root of binary tree * @return the root of the maximum average of subtree */ private double avger = Integer.MIN_VALUE; private TreeNode node = null; public TreeNode findSubtree2(TreeNode root) { // Write your code here if (root == null) { return null; } getSubtree(root); return node; } private ResultType getSubtree(TreeNode root) { if (root == null) { return new ResultType(0, 0, 0, null); } ResultType left = getSubtree(root.left); ResultType right = getSubtree(root.right); int sum = root.val + left.sum + right.sum; int num = 1 + left.count + right.count; if (avger < (double)sum / num) { avger = (double)sum / num; node = root; } return new ResultType(sum, num, (double)sum / num, root); }}
阅读全文
0 0
- Subtree with Maximum Average
- Subtree with Maximum Average
- Subtree with Maximum Average
- [LintCode]Maximum Average Subarray
- maximum average value
- Maximum Average Subarray I
- Lintcode 617:Maximum Average Subarray
- 644. Maximum Average Subarray II
- 644. Maximum Average Subarray II
- 643. Maximum Average Subarray I
- 643. Maximum Average Subarray I
- 643. Maximum Average Subarray I
- 643. Maximum Average Subarray I
- leetcode[Maximum Average Subarray I]
- 643. Maximum Average Subarray I
- 643. Maximum Average Subarray I
- 643. Maximum Average Subarray I
- 643. Maximum Average Subarray I
- USB3.0 对 2.4G WiFi 影响
- HDU6183-Color it Time
- 今天开始,每天一篇整理之前的笔记发到CSDN啦,要养成好习惯~
- web服务器负载均衡实现
- 添加自己的cmd/运行命令
- Subtree with Maximum Average
- poj2763 Housewife Wind
- UVA 10194
- 全世界一共有多少个IP地址?
- java基础--理论2
- Java开发必装的IntelliJ IDEA插件
- 升级npm 升级node.js
- shell中的括号(小括号,大括号/花括号)
- UVA 101