嘤嘤的新平衡树

给定一棵二叉树,二叉树的每个结点只有0或2个孩子。
你需要对每个结点赋值一个正整数,使得每个结点的左右子树权值和相等。
你需要返回所有结点的最小权值和对 109+7 取模的结果。
二叉树结点个数不超过105

输入
{0,0,0}
输出
3

每个节点只有0或2个孩子,那么这棵树就一定是一颗满二叉树

可以是这个样子,但是不应该考虑节点的赋值,而是把它看作是一颗收起来的左右对称的满二叉树,然后需要做的就是求这个满二叉树的节点和

int height(TreeNode* root) {
	// 获取树的层数
	if (!root) return 0;
	return max(height(root->left), height(root->right)) + 1;
}

int getTreeSum(TreeNode* tree) {
	int ans = 1, k = height(tree),mod = 1e9+7;
	while (k--) ans *= 2, ans %= mod;
	return ans - 1;
}
posted @ 2022-12-23 22:33  YaosGHC  阅读(310)  评论(0)    收藏  举报