给定一棵二叉树,二叉树的每个结点只有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;
}
标签:结点,int,height,二叉树,ans,平衡,root
From: https://www.cnblogs.com/yaocy/p/17001767.html