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

 

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

示例:

输入: 

          1
         / \
        3   2
       / \   \  
      5   3   9 

输出: [1, 3, 9]

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

class Solution {
public:
	vector largestValues(TreeNode* root) {
		vector Res;
		int Max = INT_MIN;
		if (root == NULL) return Res;
		vector 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;
	}
};

 

你可能感兴趣的:(Leetcode)