问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

C语言 二叉树构造问题

发布网友 发布时间:2022-04-24 05:54

我来回答

1个回答

热心网友 时间:2023-10-03 15:00

int findMidMid(char mid[], int midBegin, int midEnd, char root)
{
for (int i = midBegin; i <= midEnd; i++)
if (root == mid[i])
return i;
}
int findFirstMid(char first[], int firstBegin, int firstEnd, char mid[], int midBegin, int midMid);
{
if (midBegin == midMid)
return firstBegin;
int curMidPos = firstBegin;
for (int i = midBegin; i < midMid; i++)
for (int j = firstBegin + 1; j <= firstEnd; j++)
{
if ((first[j] == mid[i]) && (j > curMidPos))
curMidPos = j;
}
return curMidPos;
}
//构建二叉树
TreeNode * BuildTree(char first[], int firstBegin, int firstEnd, char mid[], int midBegin, int midEnd)
{
TreeNode *root = new TreeNode();
root->value = first[firstBegin]; //前序的第一个元素即为根结点
//中序序列中找到根的位置,其左边为左子树,右边为右子树
int midMid = findMidMid(mid, midBegin, midEnd, first[firstBegin]);
//找到中序序列中左子树所有节点在前序序列中的最后位置,此时该位置的右边为右子树
int firstMid = findFirstMid(first, firstBegin, firstEnd, mid, midBegin, midMid);
if (midMid != midBegin) //如果树的根结点有左子树
root->left = BuildTree(first, firstBegin+ 1, firstMid , mid, midBegin, midMid - 1);
else
root->left = NULL;
if (midMid != midEnd) //如果树的根结点有右子树
root->right = BuildTree(first, firstMid + 1, firstEnd, mid, midMid + 1, midEnd);
else
root->right = NULL;
return root;
}
//遍历二叉树输出度1的结点
void findDegreeOne(TreeNode *root)
{
if (root == NULL)
return;
if ((root->left == NULL && root->right != NULL) ||
(root->left != NULL && root->right == NULL) )
printf("%c ", root->value);
findDegreeOne(root->left);
findDegreeOne(root->right);
}追问for (int i = midBegin; i <= midEnd; i++)
这有错误

热心网友 时间:2023-10-03 15:00

int findMidMid(char mid[], int midBegin, int midEnd, char root)
{
for (int i = midBegin; i <= midEnd; i++)
if (root == mid[i])
return i;
}
int findFirstMid(char first[], int firstBegin, int firstEnd, char mid[], int midBegin, int midMid);
{
if (midBegin == midMid)
return firstBegin;
int curMidPos = firstBegin;
for (int i = midBegin; i < midMid; i++)
for (int j = firstBegin + 1; j <= firstEnd; j++)
{
if ((first[j] == mid[i]) && (j > curMidPos))
curMidPos = j;
}
return curMidPos;
}
//构建二叉树
TreeNode * BuildTree(char first[], int firstBegin, int firstEnd, char mid[], int midBegin, int midEnd)
{
TreeNode *root = new TreeNode();
root->value = first[firstBegin]; //前序的第一个元素即为根结点
//中序序列中找到根的位置,其左边为左子树,右边为右子树
int midMid = findMidMid(mid, midBegin, midEnd, first[firstBegin]);
//找到中序序列中左子树所有节点在前序序列中的最后位置,此时该位置的右边为右子树
int firstMid = findFirstMid(first, firstBegin, firstEnd, mid, midBegin, midMid);
if (midMid != midBegin) //如果树的根结点有左子树
root->left = BuildTree(first, firstBegin+ 1, firstMid , mid, midBegin, midMid - 1);
else
root->left = NULL;
if (midMid != midEnd) //如果树的根结点有右子树
root->right = BuildTree(first, firstMid + 1, firstEnd, mid, midMid + 1, midEnd);
else
root->right = NULL;
return root;
}
//遍历二叉树输出度1的结点
void findDegreeOne(TreeNode *root)
{
if (root == NULL)
return;
if ((root->left == NULL && root->right != NULL) ||
(root->left != NULL && root->right == NULL) )
printf("%c ", root->value);
findDegreeOne(root->left);
findDegreeOne(root->right);
}追问for (int i = midBegin; i <= midEnd; i++)
这有错误

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
女生学java有前途吗 女生学java能做什么工作 大三女生,某中下985软工,想尽快投简历找工作,选择cpp还是j ...真心真意谢谢你有人知道什么歌名吗_百度知... 腾讯电脑管家怎么退出登录_腾讯电脑管家退出登录方法介绍 单相电机咕咕响声的原因及解决方法 这是那个动漫人物?最好给下链接或者动漫第几集~ 如何评价《你的名字。》中的宫水三叶? 你的名字中立花龙的父母亲叫什么 宜昌市发展的怎么样 宜昌有哪些污染 二叉树构造问题 中国抗日英雄 请大家给我推荐一款强光手电筒? 铭久 手电筒怎么换档 做梦梦见母亲去世了,这是好梦还是坏梦啊,梦见母亲去世,我大哭,然后哭醒了,这是什么梦? 铭久强光手电筒质量如何 铭久3.0mini夜钓灯怎么样 铭久手电筒厂家在哪里 铭久p90手电怎么拆 海鲜奥带是什么东西 海鲜食物中“带子”英文翻译是什么有道词和其他词典都是翻译都是生活中的袋子之类的东西 生羊血怎样加工成羊血块,想知道具体的做法 新鲜羊血怎么凝固 生羊血怎样加工成可以使用的羊血块,想知道具体的制作方法 怎么凝固羊血 羊血怎样储存 为什么手机显示养老金终止发放,时际卡里钱到账了? 初于青丝+‖+终于白发哪个是男生用的 低保终止发放是没有的意思吗? 朱棣谋权篡位,为什么自始至终毫发无损? C语言:一个二叉树构造问题 先序构建二叉树 构造二叉树,谢谢 怎么线索二叉树? 二叉树由哪3个基本元素组成? c语言数据结构 二叉树构造 输出问题 二叉树的构造问题 关于C语言二叉树! 二叉树能干吗 二叉树c语言实现 Java二叉树构造问题 要求:从控制台输入一行扩展二叉树的字符串,然后根据这个字符串构造二叉树。THX.. 现有一棵二叉树和一个有序数组,要求通过这棵二叉树构造有序数组。它们的类型声明如下,请定义有序数组 C语言,现有一棵二叉树和一个有序数组,要求通过这棵二叉树构造有序数组。它们的类型声明如下,请 C++二叉树构造问题 怎么结束呢 重建二叉树的程序问题 数据结构C语言版 二叉树构造算法实验 在键盘上怎么输入 数据结构二叉树 编程实现以上二叉树中序遍历操作,输出遍历序列,求写代码~~ 统编(部编)四年级语文下册9《短诗三首》教学设计及教学反思 家庭居住湿度多少为标准?
  • 焦点

最新推荐

猜你喜欢

热门推荐