//
此代码为
多叉树转化为
二叉树并且二叉树转化为多叉树的代码
#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
*