leetcode 979. Distribute Coins in Binary Tree

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Sea_muxixi/article/details/86563332

leetcode 979. Distribute Coins in Binary Tree

题意:给你一个二叉树,对于每个节点的val,每次只能往父亲或者儿子移动1,最后使得所有节点值都为1,求最小的移动次数。

思路:从叶子到跟寻找,对于每个节点,只能剩下一个。多了的值肯定要全给父亲,少的值全问父亲要,统计一下就好了。

class Solution {
public:
	int distributeCoins(TreeNode* root) {
		ans = 0;
		dfs(root);
		return ans;
	}
	int dfs(TreeNode* root)
	{
		if (root == nullptr)  return 0;
		int left = dfs(root->left);
		int right = dfs(root->right);

		ans += abs(left) + abs(right);

		return root->val + left + right - 1;
	}
private:
	int ans;
};

猜你喜欢

转载自blog.csdn.net/Sea_muxixi/article/details/86563332