树的相互转换 多叉树转化为二叉树

//   此代码为   多叉树转化为   二叉树并且二叉树转化为多叉树的代码

#include   "stdafx.h"
#include   <vector>
#include   <iostream>

//    树的结点分布信息
struct   SCreateNormalTree
{
        int   nData   ;
        int   nPrev   ;     // -1   为跟结点
};

const   static   int   _NORMAL_TREE_NODE_NUM_   = 9;
SCreateNormalTree   createNormalTreeMap   [ _NORMAL_TREE_NODE_NUM_ ];

void   CreateNormalTreeMap ()
{
        createNormalTreeMap [0]. nData   =  5;
        createNormalTreeMap [0]. nPrev   = -1;

        createNormalTreeMap [1]. nData   =  3;
        createNormalTreeMap [1]. nPrev   =  5;

        createNormalTreeMap [2]. nData   =  4;
        createNormalTreeMap [2]. nPrev   =  5;

        createNormalTreeMap [3]. nData   =  2;
        createNormalTreeMap [3]. nPrev   =  5;

        createNormalTreeMap [4]. nData   =  8;
        createNormalTreeMap [4]. nPrev   =  3;

        createNormalTreeMap [5]. nData   = 10;
        createNormalTreeMap [5]. nPrev   =  3;

        createNormalTreeMap [6]. nData   = 11;
        createNormalTreeMap [6]. nPrev   =  3;

        createNormalTreeMap [7]. nData   = 12;
        createNormalTreeMap [7]. nPrev   =  2;

        createNormalTreeMap [8]. nData   = 100;
        createNormalTreeMap [8]. nPrev   =   5;
}
//   树的结点分布信息


//   多叉树
struct   SNormalTreeNode
{
        int   nData   ;                                     //    元素的值
        SNormalTreeNode *   pParent   ;                      //  双亲结点
        std :: vector   < SNormalTreeNode *>   vecChildNode   //    孩子结点
};



struct   SBinaryTreeNode         //   二叉孩子兄弟链表                    
{
        int   nData   ;                                    //    元素的值
        SBinaryTreeNode *   pParent   ;                     //  双亲结点
        SBinaryTreeNode *   pFirstChild   ;                 //    孩子结点   (   左孩子   )
        SBinaryTreeNode *   pSibling   ;                    //    兄弟结点   (   右兄弟   )
};


SNormalTreeNode   *   InitializeNormalTree ( );
SNormalTreeNode   *   InsertValueToNormalTree (   SNormalTreeNode   *   pRoot ,   int   nValue   ,   int   nParent   );
SNormalTreeNode   *  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值