981统计利用二叉树存储的森林中树的棵数

Posted nianliwanshao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了981统计利用二叉树存储的森林中树的棵数相关的知识,希望对你有一定的参考价值。

 技术分享图片

 求用二叉树存储的森林中树的棵数,我们首先需要的是将二叉树转换为森林。

  那么如何计算二叉树存储的森林中树的棵数?

  有这么一个森林与二叉树转换规则:

    从二叉树根开始一直往右子树走,一共路过几个节点,对应的森林就有几个根,

  也就是说,对应的森林有几棵树 高度为h的满二叉树最右边一路有h个节点(就是  

  高度为n),因此对应的森林有h棵树.  

 下面给出二叉树转换成森林的示意图:

技术分享图片

    (没找到作图工具,强行ps做的,线没有对齐,别介意)

 

#include <iostream>
using namespace std;
typedef struct BTNode
{
    char data;
    BTNode *lchild, *rchild;
}BTNode;

void CreatTree(BTNode *&tree)
{
    char ch;
    cin >> ch;
    tree = new BTNode;
    if (ch == #)
        tree = NULL;
    else
    {
        tree->data = ch;
        CreatTree(tree->lchild);
        CreatTree(tree->rchild);
    }
}
void Forest(BTNode *tree, int &treeCount)
{
    while (tree != NULL)
    {
        treeCount++;
        tree = tree->rchild;
    }
}
void DestoryTree(BTNode *&tree)
{
    if (tree != NULL)
    {
        DestoryTree(tree->lchild);
        DestoryTree(tree->rchild);
        delete tree;
    }
}
int main()
{
    BTNode *tree;
    CreatTree(tree);
    int treeCount = 0;
    Forest(tree, treeCount);
    cout << treeCount;
    DestoryTree(tree);
    system("pause");
    return 0;
}

 

以上是关于981统计利用二叉树存储的森林中树的棵数的主要内容,如果未能解决你的问题,请参考以下文章

双日练 | 二叉树转换成对应的森林

树森林与二叉树的相互转换

数据结构中树的计数

树的存储结构;树与二叉树的转换;树和森林的遍历算法

数据结构学习笔记——树的存储结构以及树森林与二叉树之间的转换

数据结构学习笔记——树的存储结构以及树森林与二叉树之间的转换