求二叉树第k层的节点个数
typedef struct Node
{
int val;
struct Node* _left;
struct Node* _right;
Node(const int& data)
:val(data)
, _left(NULL)
, _right(NULL)
{}
}Node;
void _GetKLevelSize(Node* root, const size_t k,
size_t level, size_t& count)
{
if (root == NULL)
{
return;
}
if (level == k)
{
count++;
return;
}
_GetKLevelSize(root->_left, k, level + 1, count);
_GetKLevelSize(root->_right, k, level + 1, count);
}
size_t GetKLevelSize(size_t k)
{
assert(k > 0);
size_t count = 0;
size_t level = 1;
_GetKLevelSize(_root, k, level, count);
return count;
}
一个数组中有一个数字的次数超过了数组的一半,求出这个字符。
int OverHalfNum(int* array, size_t n)
{
assert(array);
int count = 0;
int num = array[0];
for (size_t i = 1; i < n; ++i)
{
if (array[i] == array[i - 1])
{
count++;
}
else
{
if (count != 0)
{
count--;
}
num = array[i];
}
}
return num;
}
int main()
{
int array[] = { 2, 3, 4, 5, 6, 2, 2, 2, 2, 2, 1, 5, 2, 2 };
cout << OverHalfNum(array, sizeof(array) / sizeof(array[0]));
system("pause");
return 0;
}