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统计利用二叉树存储的森林中树的棵数的主要内容,如果未能解决你的问题,请参考以下文章