假设二叉树的遍历算法采用链接存储结构存储,设计一个算法由二叉树的遍历算法B复制产生二叉树的遍历算法1

以下试题来自:
多项选择题假设二叉树采用二叉链表存储结构存储,试设计一个算法,求出该二叉树中第一条最长的路径长度以及此路径上各结点的值。
为您推荐的考试题库
你可能感兴趣的试题
1.问答题 (分为2组),(分为3组)。2.问答题 各关键字的散列函数值如下表1所列:
<TD s...... 3A.25000ns B.250023ns C.250017ns D.250020ns4A.Li B.Zhang C.Sun D.Wang5A.x3=1,x2~x0至少有一个1 B.x3=0,x2~x0至少有一个1C.x3=1,x2~x0任意 D.x3=0,x2~x0任意
热门相关试卷
最新相关试卷&#xe621; 上传我的文档
&#xe602; 下载
&#xe60c; 收藏
该文档贡献者很忙,什么也没留下。
&#xe602; 下载此文档
设二叉树采用链式存储结构,试设计一个算法计算一棵给定二叉树中叶子结点的数目
下载积分:30
内容提示:设二叉树采用链式存储结构,试设计一个算法计算一棵给定二叉树中叶子结点的数目
文档格式:PDF|
浏览次数:294|
上传日期: 19:19:17|
文档星级:&#xe60b;&#xe60b;&#xe60b;&#xe60b;&#xe60b;&#xe60b;
全文阅读已结束,如果下载本文需要使用
&#xe71b; 30 积分
&#xe602;下载此文档
该用户还上传了这些文档
设二叉树采用链式存储结构,试设计一个算法计算一棵给定
官方公共微信假设二叉树采用链接存储结构存储,设计一个算法,求;程序1;#include#include#defineM;ElemTstructnode*;//数据元素//指向左孩子//指向右孩子;//由str串创建二叉链;}BTN;voidCreateBTNode(BTNode*;BTNode*St[MaxSize],*p=NU;while(ch
假设二叉树采用链接存储结构存储,设计一个算法,求二叉树b的宽度
程序1 #include
#define MaxSize 100 typedef char ElemT typedef struct node {
struct node * struct node *
//数据元素 //指向左孩子 //指向右孩子 //由str串创建二叉链 } BTN void CreateBTNode(BTNode *&b,char *str)
} BTNode *St[MaxSize],*p=NULL; int top=-1,k,j=0; b=NULL;
ch=str[j]; while (ch!='\\0') //str未扫描完时循环 {
} switch(ch)
{ case '(':top++;St[top]=p;k=1; case ')':top--; case ',':k=2;
//为右结点 default:p=(BTNode *)malloc(sizeof(BTNode));
} j++; ch=str[j]; p->data=p->lchild=p->rchild=NULL; if (b==NULL)
//p指向二叉树的根结点
//已建立二叉树根结点
{ case 1:St[top]->lchild=p; case 2:St[top]->rchild=p; } else
//为左结点
//建立的二叉树初始时为空 BTNode *FindNode(BTNode *b,ElemType x)//返回data域为x的结点指针 {
} BTNode *LchildNode(BTNode *p) {
} BTNode *RchildNode(BTNode *p) {
void DispBTNode(BTNode *b) {
} int BTWidth(BTNode *b)
//求二叉树b的宽度 {
{ if (b!=NULL) {
} printf(\,b->data); if (b->lchild!=NULL || b->rchild!=NULL) {
} printf(\); DispBTNode(b->lchild); if (b->rchild!=NULL) printf(\); DispBTNode(b->rchild); printf(\); //以括号表示法输出二叉树 return p-> //返回*p结点的右孩子结点指针 return p-> //返回*p结点的左孩子结点指针 BTNode *p; if (b==NULL)
p=FindNode(b->lchild,x); if (p!=NULL)
return FindNode(b->rchild,x); else
return NULL; else if (b->data==x)
//结点的层次编号
//结点指针
//定义队首和队尾指针 //置队列为空队 //定义顺序非循环队列 BTNode *p;
} Qu[MaxSize];
int front, front=rear=0; if (b!=NULL)
return 0; rear++;
Qu[rear].p=b; int lnum,max,i,n;
//根结点指针入队 //根结点的层次编号为 //队列不为空 Qu[rear].lno=1;
while (rear!=front) {
} max=0;lnum=1;i=1; while (i<=rear) {
n=0; front++; b=Qu[front].p;
lnum=Qu[front].
//队头出队 if (b->lchild!=NULL)
} if (b->rchild!=NULL)
} rear++; Qu[rear].p=b-> Qu[rear].lno=lnum+1; rear++; Qu[rear].p=b-> Qu[rear].lno=lnum+1; //左孩子入队
//右孩子入队 while (i<=rear && Qu[i].lno==lnum)
} lnum=Qu[i]. if (n>max) max=n; n++;i++; }
程序2 #include
typedef char ElemT typedef struct node {
struct node * struct node *
//数据元素 //指向左孩子 //指向右孩子 } BTN extern void CreateBTNode(BTNode *&b,char *str); extern BTNode *FindNode(BTNode *b,ElemType x); extern BTNode *LchildNode(BTNode *p); extern BTNode *RchildNode(BTNode *p); extern int BTNodeDepth(BTNode *b); extern void DispBTNode(BTNode *b); extern int BTWidth(BTNode *b); extern int Nodes(BTNode *b); extern int LeafNodes(BTNode *b); void main() {
BTNode *b,*p,*lp,*; CreateBTNode(b,\);
printf(\); p=FindNode(b,'H'); if (p!=NULL) {
lp=LchildNode(p);
} if (lp!=NULL)
printf(\无左孩子\); rp=RchildNode(p); if (rp!=NULL)
printf(\无右孩子\); printf(\右孩子为%c\,rp->data); printf(\左孩子为%c \,lp->data); printf(\); printf(\二叉树b:\);DispBTNode(b); printf(\); printf(\二叉树b的宽度:%d\\n\,BTWidth(b)); printf(\);
getchar(); 三亿文库包含各类专业文献、生活休闲娱乐、行业资料、高等教育、各类资格考试、幼儿教育、小学教育、中学教育、96假设二叉树采用链接存储结构存储,设计一个算法,求二叉树b的宽度等内容。 
 假设二叉树采用二叉链存储结构存储,分别实现以下算法,并在程序中完成测试: (1)...(4)求二叉树 b 的宽度 #include&stdio.h& #include&malloc.h& #define...  二叉树的最大宽度是指:二叉树所有层中结点个数的...二叉树按照二叉链表方式存储,编写算法,计算二叉树中...以二叉链表作为存储结构,建立二叉树(以先序来建立)...  设二叉树采用链式存储结构,试设计一个算法计算一棵给定二叉树中叶子结点的数目_...//寻找父 结点 B[front]-&lchild=S; if(sign%2==0){ B[front]-&rchild...  树 B 的层号表示为 la,2b,3d,3e,2c,对应于...21.二叉树的存储结构分为___ ,树的存储结构分为...5.假设二叉树采用链接方法存储,编写一个函数按凹入...  假设各值互不相等,采用顺序存储结构存 储,空二叉树...//按扩展前序序列创建一棵二叉树 BiNode *root =...设计一个算法,采用括号表示法输出该二叉树。 Input ...  *5.假设二叉树采用链式存储结构进行存储,试设计一个算法,求二叉树的宽度(即 ...template &class T& struct BiNode{ T BiNode&T& *lchild, *rchild...  )设 F 是一个森林,B 是由 F 变换得的二叉树。...算法设计题 以二叉链表作为二叉树的存储结构,编写...[题目分析] 求二叉树高度的算法见上题。求最大...  二叉链表为存储结构,写出二叉树宽度的算法。所谓宽度,是指二叉树的各层上,具有结点数最多的那一层上的结点总数。正确答案及相关解析
正确答案 typedef struct ...查看: 1125|回复: 9
//我做了一个程序,可以实现二叉树的左右子树的交换功能,#include/* 二叉树类型的定义(二叉链表形式储存) */ t // 树的结点数据类型为字符型,可以根据需要修改 typedef struct node * // 定义二叉树结点类型 str
大家好不好
可以在中序遍历的基础上,加几条指令.n表示层,初始值为0 下列算法是递归嵌套。 1、n++,遍历当前节点的左子树 2、n--,访问当前节点,如果节点的data==x,那么(意味着找到节点了)打印节点层数 3、n++,遍历当前节点的右子树 递归结束后,如果
法1: template int tree::tree_level(tree_node *root)//利用递归: { if(root==NULL) return 0; else { int l_level=tree_level(root-&rchild);//记录左子树的层数 int r_level=tree_level(root-&rchild);//记录右子树的层数 return l_level&r
看不清楚换个脸
我不理解为什么你第一句用&&而第二句用||。 不过我觉得你这个递归应该再写简单一点 bool func(BTNode *b,BTNode *c) { bool like1,like2; if(b==NULL&&c==NULL) else if(b==NULL&&c!=NULL||b!=NULL&&c==NULL) else {
int count = 0; void countSingleChild(Btree *T) { if(T) { if((T-&left == NULL && T-&right != NULL)||(T-&left != NULL && T-&right == NULL)) count++; countSingleChild(T-&left); countSingleChild(T-&right); } }
template //模板类 struct Node//节点 { T Node* Node* }; template void Release ( Node *R ) { if (R!=NULL) { Release(R -&lch); // 释放左子树 Release(R -&rch); // 释放右子树 delete R; // 释放根结点 } }
显然后序遍历比较合理。正常的逻辑应该就是:做好当前结点子树内部的交换,然后交换当前结点的左右子树。刚好符合后序遍历的算法逻辑。 1. 交换好左子树 2. 交换好右子树 3. 交换左子树与右子树 其他算法如先序和按层次其逻辑都差不多,即访问当
#include #include typedef struct binode{ struct binode *lchild,* }binode,* typedef struct{ bitree elem[100]; } bitree creat_bt(){ //按扩展前序建二叉树 scanf(&%d&,&x); if (x
明天会更美丽
应该没错~ p = T;//p指向树根结点 if(p)//树非空 { InitQueue(Q);//初始化队列 EnQueue(Q,p);//p指向结点入列 while(!Empty(Q))//队列非空 { DeQueue(Q,p);//出列且p指向出列结点 Visit(p);//访问结点 //若p指向结点左孩子非空,则左孩子入列 if

我要回帖

更多关于 二叉树的遍历算法 的文章

 

随机推荐