경로 총화 II

1237 단어 데이터 구조
//lt113

/*
     II

             ,                           。

  :               。

  :
       ,      sum = 22,

			  5
			 / \
			4   8
		   /   / \
		  11  13  4
		 /  \    / \
		7    2  5   1


  :

[
   [5,4,11,2],
   [5,8,4,5]
]

//  1:  
*/

class Solution {
public:
	//  1:  
	//                            。
	//        sum:sum-=root->val
	//    :
	//(1)root == NULL,return NULL;
	//(2)      ,if(sum == 0) res.push_back(item)


	//Trick1:              vector item,       item.pop_back()

	vector> pathSum(TreeNode* root, int sum) {
		vector item;
		vector> res;
		helper(root, sum, item, res);
		return res;
	}
	void helper(TreeNode* root, int sum, vector& item, vector>& res) {
		if (root == NULL) return;
		sum -= root->val;
		item.push_back(root->val);
		if (root->left == NULL && root->right == NULL && sum == 0) {
			res.push_back(item);
			return;
		}
		if (root->left) {
			helper(root->left, sum, item, res);
			//  !!!           
			item.pop_back();
		}
		if (root->right) {
			helper(root->right, sum, item, res);
			item.pop_back();
		}
	}
};

좋은 웹페이지 즐겨찾기