森林和二叉树的相互转换
前言
其转换规则本身就是一个递归规则,每个结点都是一次递归操作,需要仔细琢磨。
一、森林转二叉树
1、森林转二叉树的规则如下(该规则本身就是一个递归规则,相对于每棵树的根节点都要按如此规则转换):
case:空森林
森林 | 对应 | 二叉树 |
---|---|---|
空 | -> | 空 |
case:非空森林
森林 | 对应 | 二叉树 |
---|---|---|
第一棵树的根 | -> | 二叉树的根 |
第一棵树的子树森林 | -> | 二叉树的左子树 |
森林中其它的树 | -> | 二叉树的右子树 |
2、如下图展示按照上面森林非空的规则,将森林转为二叉树
二、二叉树转换森林
1、转换规则如下(与森林转二叉树的规则相对应):
case:二叉树空
二叉树 | 对应 | 森林 |
---|---|---|
空 | -> | 空 |
case:二叉树非空
二叉树 | 对应 | 森林 |
---|---|---|
根节点 | -> | 第一棵树根 |
左子树按照同样的转换规则得到的森林 | -> | 第一棵树根的子树森林 |
右子树按照同样的转换规则得到的森林 | -> | 整个森林中第2棵树到其它子树 |