森林和二叉树转换的c或c++代码

 我来答
bdzdlj2062
高粉答主

2015-05-27 · 繁杂信息太多,你要学会辨别
知道大有可为答主
回答量:1.1万
采纳率:3%
帮助的人:2261万
展开全部
你好,尊敬的百度知道用户楼主,很愿意为你问题作答

1、转换:将森林中的每棵树转换成二叉树; 2、连线:第一颗树不动,从第二棵树开始,依次把后一棵树的根节点座位前一棵树的根节点的右孩子,知道所有的二叉树都连在一起,即完成了森林向二叉树的转换。 3、旋转:以根节点为轴心,将整棵树顺时针旋转一定角度,得到层次分明的二叉树。

将一棵二叉树转化成森林,可按如下步骤进行:
①抹线:将二叉树根结点与其右孩子之间的连线,以及沿着此右孩子的右链连续不继搜索到的右孩子间的连线抹掉。这样就得到了若干棵根结点没有右子树的二叉树。
②将得到的这些二叉树用前述方法分别转化成一般树。

首先你要对一些基本概念掌握清楚。祝你好运!!
追答
这是C++的
typedef struct BinaryTreeNode{
struct BinaryTreeNode* leftChild;
struct BinaryTreeNode* rightChild;
int value;
};

typedef struct TreeNode{
struct TreeNode* child[];
int child_count;
int value;
};

BinaryTreeNode* ToBinaryTree(TreeNode* root){
if(root == null)
return null;
BinaryTreeNode* binaryRoot = new BinaryTreeNode();
binaryRoot->value = root->value;
binaryRoot->leftChild = ToBinaryTree(root->child[0]);
BinaryTreeNode* brother = binaryRoot->leftChild;
for(int i = 1; i child_count;i++){
brother->rightChild = ToBinaryTree(root->child[i]);
brother = brother->rightChild;
}
return binaryRoot;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式