嘤嘤的新平衡树

给定一棵二叉树,二叉树的每个结点只有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;
}

本文作者:YaosGHC

本文链接:https://www.cnblogs.com/yaocy/p/17001767.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   YaosGHC  阅读(297)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起