社区
C++ 语言
帖子详情
急求层次遍历建立二叉树的算法
miraculous16
2006-03-22 08:48:54
按完全二叉树的层次顺序,依次输入结点信息来建立二叉链表
...全文
315
8
打赏
收藏
急求层次遍历建立二叉树的算法
按完全二叉树的层次顺序,依次输入结点信息来建立二叉链表
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
miraculous16
2006-03-23
打赏
举报
回复
谢谢各位
Rick_ang
2006-03-23
打赏
举报
回复
层次遍历用队列
bombwang
2006-03-23
打赏
举报
回复
mark
du51
2006-03-22
打赏
举报
回复
#include <iostream>
#include <cstdlib>
using namespace std;
struct BinTree
{
int data;
BinTree *Left,*Right;
};
void del(BinTree *p)
{
if(p->Left)del(p->Left);
if(p->Right)del(p->Right);
delete p;
}
BinTree *Creat(int *node, int &size, int pos)
{
if(pos>=size) return NULL;
BinTree *t = new BinTree;
t->data=node[pos];
t->Left=Creat(node, size, pos*2+1);
t->Right=Creat(node, size, pos*2+2);
return t;
}
void DFS( BinTree*p)
{
if(!p)return ;
cout<<p->data<<" ";
DFS(p->Left);
DFS(p->Right);
}
int main(int argc, char *argv[])
{
BinTree *tree;
int node[]={\
1,2,3,4,5,6,7,8,9,10,11,12,\
13,45,15,16,17,18,19,20,21,\
22,23,24,25,26,27,28,29,30,31
};
int size=sizeof(node)/sizeof(node[0]);
tree=Creat(node, size, 0);
DFS(tree);
printf("\n") ;
del(tree);
system("PAUSE");
return 0;
}
benlei999
2006-03-22
打赏
举报
回复
我写了一个
#include "stdafx.h"
#include <iostream.h>
#include <QUEUE>
using namespace std;
struct Node
{
char data[20];
struct Node* left;
struct Node* right;
};
void CreateTree(Node *head,char *endChar)//endChar是结束输入的字符串
{
queue<Node *> que;
char str[20]="";
cin>>str;
if (strcmp(str,endChar))
{
strcpy(head->data,str);
head->left=NULL;
head->right=NULL;
que.push(head);
}
else
{
return;
}
cin>>str;
while(strcmp(str,endChar))
{
Node *p=new Node;
strcpy(p->data,str);
p->left=NULL;
p->right=NULL;
if (que.front()->left==NULL)
que.front()->left=p;
else
{
que.front()->right=p;
que.pop();
}
que.push(p);
cin>>str;
}
}
void DisplayTree(Node *head)
{
queue<Node *> que;
que.push(head);
while(que.size()!=0)
{
Node *p=que.front();
if (p!=NULL)
{
cout<<p->data<<" ";
que.push(p->left);
que.push(p->right);
}
que.pop();
}
cout<<endl;
}
void main()
{
Node tree;
CreateTree(&tree,"end");
DisplayTree(&tree);
}
miraculous16
2006-03-22
打赏
举报
回复
怎么存啊,我不会啊,这位大狭教教我吧!
benlei999
2006-03-22
打赏
举报
回复
晕,用队列存左右节点的指针
benlei999
2006-03-22
打赏
举报
回复
用递归很容易搞定的
二叉树
层次遍历
算法
——C/C++
二叉树层序遍历 1、
算法
思想 用一个队列保存被访问的当前节点的左右孩子以实现层序遍历。 在进行
层次遍历
的时候,设置一个队列结构,遍历从二叉树的根节点开始,首先将根节点指针入队列,然后从队头取出一个元素,每取一个元素,执行下面两个操作: 访问该元素所指向的节点 若该元素所指节点的左右孩子节点非空,则将该元素所指节点的左孩子指针和右孩子指针顺序入队。此过程不断进行,当队列为空时,二叉树的
层次遍历
结束...
c++根据二叉树的
层次遍历
建立二叉树
_二叉树-
层次遍历
(C++)
Today,叨叨Chen继续给大家分享
算法
啦。
层次遍历
二叉树是大家再熟悉不过的二叉树操作了,看到这个
算法
通常会联想到队列,没错,叨叨Chen设计的
层次遍历
算法
也是用到了队列(先进先出),下面一起进入
算法
游乐场吧。It's show time!Punchline-------------------------------------------------------------------Tas...
按
层次遍历
二叉树
算法
问题:按
层次遍历
二叉树 在网上看了一些按
层次遍历
二叉树的
算法
,这里修改了一下通过队列来按
层次遍历
二叉树的
算法
------------------------------------------------------- 网上说的通过队列来实现的解释是: 设置一个队列,然后只要队列不为空,将对首元素的左右孩子加入队列(如果左右孩子不为空),然后将队列的首元素出对即可 流程如下:
层次顺序遍历二叉树 (二叉树层序遍历)
【问题描述】 编写按层次顺序遍历二叉树的
算法
实验要求:以二叉链表作为存储结构【输入形式】 以扩展二叉树前序遍历序列作为输入,创建二叉树。 【输出形式】 输出
层次遍历
节点的编号,每层按从左到右顺序输出。 【样例输入】 AB#D##C## 【样例输出】 ABCD //层次顺序遍历二叉树 #include<stdio.h> #include<stdlib.h> #include<string.h> #define MaxSize 128 // 定义
建立二叉树
:已知
层次遍历
顺序
建立二叉树
、已知先序遍历顺序
建立二叉树
其他二叉树知识!二叉树知识汇总 目录 前提知识: 约定: 二叉树节点的存储结构: 创建一个节点:
建立二叉树
的几种方法: 一、已知先序遍历顺序,构建二叉树。(链式存储) 二、已知
层次遍历
顺序,构建二叉树。(链式存储) 三、已知节点关系,
建立二叉树
(邻接表存储) 四、已知先序和中序遍历顺序,
建立二叉树
。 前提知识: 约定: 约定二叉树的内容为int类型,并且都>=1,0代表是空节点。我们一般画的二叉树为图一,但是计算机中存储时真实的样子是图二,即需要考虑空节点,不然..
C++ 语言
65,210
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章