-
需要对于完全二叉树和满二叉树的概念和性质很熟悉
-
#include
#include
#include
using namespace std;
struct TreeNode
{
int val;
TreeNode lChild;
TreeNode rChild;
TreeNode(int val, TreeNodel = nullptr, TreeNoder = nullptr)
{
this->val = val;
this->lChild = l;
this->rChild = r;
}
};
TreeNode *create(int intarr[], int length, int i)
{
TreeNode *node = nullptr;if (i < length && intarr[i] != -1)
{
node = new TreeNode(intarr[i]);
node->lChild = create(intarr, length, i * 2 + 1);
node->rChild = create(intarr, length, i * 2 + 2);
}
return node;
}
int getTreeNumber(TreeNode *node)
{
if (node)
{
return getTreeNumber(node->lChild) + getTreeNumber(node->rChild) + 1;
}
return 0;
}
int getTreeNumberT(TreeNode *node)
{
int leftdepth = 0;
int rightdepth = 0;
if (node == nullptr)
{
return 0;
}
TreeNode *left = node;
while (left)
{
leftdepth++;
left = left->lChild;
}
TreeNode *right = node;
while (right)
{
rightdepth++;
right = right->rChild;
}
if (rightdepth == leftdepth) return pow(2, leftdepth) - 1;
else
return getTreeNumberT(node->lChild) + getTreeNumberT(node->rChild) + 1;
}
int main()
{
int intarr[6] = {1,2,3,4,5,6};
TreeNode *root = create(intarr, 6, 0);
cout << getTreeNumber(root) << endl;
cout << getTreeNumberT(root) << endl;
system(“pause”);
return 0;
}
[LeetCode] 222. Count Complete Tree Nodes 求完全二叉树的节点个数
最新推荐文章于 2021-12-26 22:40:47 发布