//基本数据结构
template<class T>
struct BinaryTreeNode
{
T _data;
BinaryTreeNode<T>* _left;
BinaryTreeNode<T>* _right;
BinaryTreeNode(const T& x)
:_data(x)
,_left(NULL)
,_right(NULL)
{
}
};
//节点总个数
size_t _size(Node* root)
{
size_t count=0;
if(root == NULL)
return 0;
count++;
count+=_size(root->_left);
count+=_size(root->_right);
}
//叶子节点个数
size_t _LeafSize(Node* root)
{
if(root == NULL)
return 0;
if(root->_left == NULL && root->_right == NULL)
return 1;
return _LeafSize(root->_left)+_LeafSize(root->_right);
}
//第K层节点个数
void _GetKLevel(Node* root, size_t level, size_t k,size_t& size)
{
if (root == NULL)
{
return;
}
if (k == level)
{
++size;
return;
}
_GetKLevel(root->_left, level+1, k, size);
_GetKLevel(root->_right, level+1, k, size);
}