Leetcode 515. 在每个树行中找最大值

 

您需要在二叉树的每一行中找到最大的值。

示例:

输入: 

          1
         / \
        3   2
       / \   \  
      5   3   9 

输出: [1, 3, 9]

基本思路:二叉树的层序遍历而已。用两个数组交替记录每次遍历的结果,并将其最大值保存至结果中。

class Solution {
public:
	vector<int> largestValues(TreeNode* root) {
		vector<int> Res;
		int Max = INT_MIN;
		if (root == NULL) return Res;
		vector<TreeNode*> First,Second;
		First.push_back(root);
		Res.push_back(root->val);
		while (First.size() != 0 || Second.size() != 0) {
            
            // 第一行
			for (TreeNode* TN : First) {
				if (TN->left != NULL) {
					Second.push_back(TN->left);
					Max = max(Max, TN->left->val);
				}
				if (TN->right != NULL) {
					Second.push_back(TN->right);
					Max = max(Max, TN->right->val);
				}
			}
			if (Second.size() != 0) {
				Res.push_back(Max);
			}
			First.clear();
			Max = INT_MIN;
            
            // 第二行
			for (TreeNode* TN : Second) {
				if (TN->left != NULL) {
					First.push_back(TN->left);
					Max = max(Max, TN->left->val);
				}
				if (TN->right != NULL) {
					First.push_back(TN->right);
					Max = max(Max, TN->right->val);
				}
			}
			if (First.size() != 0) {
				Res.push_back(Max);
			}
			Second.clear();
			Max = INT_MIN;
		}
		return Res;
	}
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值