森林和二叉树的相互转换

森林和二叉树的相互转换

前言
其转换规则本身就是一个递归规则,每个结点都是一次递归操作,需要仔细琢磨。

一、森林转二叉树
1、森林转二叉树的规则如下(该规则本身就是一个递归规则,相对于每棵树的根节点都要按如此规则转换):
case:空森林

森林 对应 二叉树
->

case:非空森林

森林 对应 二叉树
第一棵树的根 -> 二叉树的根
第一棵树的子树森林 -> 二叉树的左子树
森林中其它的树 -> 二叉树的右子树

2、如下图展示按照上面森林非空的规则,将森林转为二叉树
森林和二叉树的相互转换_第1张图片
二、二叉树转换森林
1、转换规则如下(与森林转二叉树的规则相对应):
case:二叉树空

二叉树 对应 森林
->

case:二叉树非空

二叉树 对应 森林
根节点 -> 第一棵树根
左子树按照同样的转换规则得到的森林 -> 第一棵树根的子树森林
右子树按照同样的转换规则得到的森林 -> 整个森林中第2棵树到其它子树

森林和二叉树的相互转换_第2张图片

你可能感兴趣的:(数据结构,森林,二叉树,相互转换)