10-E. DS森林叶子编码

10-赫夫曼编码及综合-
题目描述
给定一组森林,编写程序生成对应的二叉树,输出这颗二叉树叶结点对应的二进制编码.规定二叉树的左边由0表示,二叉树的右边由1表示。

输入
N B 表示N个树,每结点最多B个分支

第2行至第N+1行,每个树的先序遍历

输出
每行表示一个叶结点对应的二进制编码.

输入样例
3 3
A B 0 0 0 C 0 0 0 D 0 0 0
E F 0 0 0 0 0
G H 0 0 0 I J 0 0 0 0 0 0

0 1 1
1 0
1 1 0 1 0

->如果把森林中的第二棵树的根节点看作是第一棵树的根结点的兄弟,则可以找到一个唯一的二叉树与之对应。
->兄弟变右孩子,左孩子变左孩子
->(森林转二叉树,新树接入右孩子)

//给定森林,生成对应的二叉树,输出这颗二叉树结点对应的二进制编码
//create多叉树
//多叉树各自转二叉树
//转成一个二叉树
//coding编码

#include<iostream>
using namespace std;

int N,B;//N个树,每结点最多B个分支

class treenode//多叉树结点
//多叉树的构造:多叉树的结点结构中,指向孩子的指针应该是二级指针,它需要根据用户的输入动态分配孩子的数目。函数传入根结点,返回根结点,在函数内部使用循环对每个孩子结点进行构造即可。
//因为是动态分配所以不用new两次
{
   
    char data;
    treenode **child;
public:
    treenode()
    {
   
        child=new treenode*[B];
        for(int i=0;i<B;i++)
            child[i]=NULL;
    }
    ~treenode()
    {
   delete []child;}
    friend class forest;
};

class binode//二叉树结点
{
   
    char data;
    binode *lchild,*rchild;
    binode():
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值