#include "Tree.h"
using namespace std;
//时间复杂度为O(h^2),h是二叉树的高度
int mostLeftlevel(Node* head, int level)
{
while(head != nullptr)
{
++level;
head = head->left;
}
return level - 1;
}
int bs(Node* node, int L, int h)
{
if(l == h)
return 1;
if(mostLeftlevel(node->right, L + 1) == h)
return (1 << (h - L)) + bs(node->right, L + 1, h);
else
return (1 << (h - L - 1)) + bs(node->left, L + 1, h);
}
int nodeNum(Node* head)
{
if(head == nullptr)
return 0;
return bs(head, 1, mostLeftlevel(head, 1));
}
统计完全二叉树的节点数
猜你喜欢
转载自blog.csdn.net/wzc2608/article/details/80880020
今日推荐
周排行