[LeetCode] Sum Root to Leaf Numbers

題目鏈接

int sumNumbers(TreeNode *root) {
	vector<TreeNode*> nodes;
	vector<int> numbers;
	int sum_numbers = 0;
	if(root != NULL)
	{
		nodes.push_back(root);
		numbers.push_back(root->val);                
	}
	while(!nodes.empty())
	{
		TreeNode* cur_node = nodes.back();
		int cur_number = numbers.back();
		TreeNode* left_child = cur_node->left;
		TreeNode* right_child = cur_node->right;                
		nodes.pop_back();
		numbers.pop_back();
		if(right_child != NULL)
		{
			nodes.push_back(right_child);
			int right_number = cur_number*10 + right_child->val;
			numbers.push_back(right_number);
		}
		if(left_child != NULL)
		{
			nodes.push_back(left_child);
			int left_number = cur_number*10 + left_child->val;
			numbers.push_back(left_number);
		}
		if(left_child == NULL && right_child == NULL)
		{
			sum_numbers += cur_number;
		}
	}
	return sum_numbers;
}

參考Binary Tree Postorder Traversal遍歷方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章