上篇博客,写到了对二叉树进行销毁的地方,这篇博客主要是二叉树的深度拷贝和查找、求出二叉树的相关内容。
求二叉树相关内容
//求二叉树节点个数
size_t _TreeSize(TreeNode* root, size_t* count)
{
if(count == NULL) {
return -1;
}
if(root == NULL) {
return *count;
}
(*count)++;//递归几次就有多少节点,所以计数器++
_TreeSize(root->lchild, count);
_TreeSize(root->rchild, count);
return *count;
}
size_t TreeSize(TreeNode* root)
{
if(root == NULL) {
return 0;
}
size_t count = 0;//定义计数器
return _TreeSize(root, &count);
}
//求二叉树叶子节点个数
//这里转化思想,要求二叉树叶子节点个数
//转化为求二叉树左子树叶子节点个数与右子树叶子节点个数
//递归调用,如果是叶子节点返回1
//同样,这里我们也可以用上面求二叉树节点个数的方式
//定义计数器,这里不做赘述
size_t TreeLeafSize(TreeNode* root)
{
if(root == NULL) {
return 0;
}
if(root