本文共 1893 字,大约阅读时间需要 6 分钟。
题目:
You need to find the largest value in each row of a binary tree.
Example:Input: 1 / \ 3 2 / \ \ 5 3 9 Output: [1, 3, 9]
解释:
返回二叉树每一层的最大值,不就是经典的层序遍历问题? python代码:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object): def largestValues(self, root): """ :type root: TreeNode :rtype: List[int] """ result=[] if not root: return result queue=[root] while queue: layer_number=len(queue) temp_max=float('-inf') for i in xrange(layer_number): tmp=queue.pop(0) if tmp.left: queue.append(tmp.left) if tmp.right: queue.append(tmp.right) temp_max=max(temp_max,tmp.val) result.append(temp_max) return result
c++代码:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */#includeusing namespace std;class Solution { public: vector largestValues(TreeNode* root) { vector result; if(!root) return result; queue _queue; _queue.push(root); while (!_queue.empty()) { int len_layer=_queue.size(); int max_val=INT_MIN; for (int i=0;i left) _queue.push(tmp->left); if(tmp->right) _queue.push(tmp->right); max_val=max(max_val,tmp->val); } result.push_back(max_val); } return result; }};
总结:
转载地址:http://lglcn.baihongyu.com/