求二叉树遍历算法C语言实现的

作者&投稿:祁莘 (若有异议请与网页底部的电邮联系)
~ Status
PreOrderTraverse
(
BiTree
T,
Status
(
*Visit
)
(
TElemType
e
)
)
{
//
采用二叉链表存储结构,Visit
是对数据元素操作的应用函数,先序遍历二叉树
T
的递归算法。
if
(
T
)
{
//

T
不为空
if
(
Visit
(
T->data
)
)
//
调用函数
Visit
if
(
PreOrderTraverse
(
T->lchild,
Visit
)
)
//
递归调用左子树
if
(
PreOrderTraverse
(
T->rchild,
Visit
)
)
return
OK;
//
递归调用右子树
return
ERROR;
}
else
return
OK;
}
//
PreOrderTraverse

下面是c语言的前序遍历二叉树的算法,在这里假设的节点元素值假设的为字符型,
说明:算法中用到了结构体,也用到了递归的方法,你看看怎么样,祝你好运!
#include"stdio.h"
typedef
char
ElemType;
typedef
struct
node
//定义链表结构
{
ElemType
data;
//定义节点值
struct
note
*lchild;
//定义左子节点值
struct
note
*rchild;
//定义右节点值
}BTree;
preorder(BTree
*root)
//前序遍历
{
if(roof!=NULL)
//如果不是空节点
{
printf("%c\n",root->data);
//输出当前节点
preorder(root->lchild);
//递归前序遍历左子节点
preorder(root->rchild);
//递归前序遍历右子节点
}
return;
//结束
}

设二叉树以二叉链表存储,试设计算法,实现二叉树的层序遍历。
答:按层次遍历算法如下:include <iostream> using namespace std;typedef struct treenode { //树结点结构 int data;struct treenode *left;struct treenode *right;}TreeNode;typedef struct stack{ //栈结点结构 TreeNode *node;struct stack *next;}STACK;void Traversal(TreeNode *root){ STACK *...

用c或c++实现遍历二叉树的中序算法,急求
答:printf("%c",b->data);if(b->lchild!=NULL||b->rchild!=NULL){ printf("(");DispBTNode(b->lchild);if(b->rchild!=NULL)printf(",");DispBTNode(b->rchild);printf(")");} } } extern void CreateBTNode(BTNode *&b,char *str);extern void DispBTNode(BTNode *b);void Pre...

急急急!求C语言的数据结构二叉树递归遍历程序!
答:T)//先序遍历二叉树.{ if(T){ printf("%c ",T->data);Lorder(T->lchild);Lorder(T->rchild);} } void Morder(BinTree T)//中序遍历二叉树.{ if(T){ Morder(T->lchild);printf("%c ",T->data);Morder(T->rchild);} } void Rorder(BinTree T)//后序遍历二叉树.{ if(T)...

求c语言数据结构二叉树的建树,前序遍历,输出树的代码,能用采纳。_百度...
答:(*T)->data = ch; //生成树结点 //生成左子树 Create_BiTree(&(*T)->lchild);//生成右子树 Create_BiTree(&(*T)->rchild);} } //输出结点的值 void Print_BiTreeNode(BiTree T){ printf("%c\t",T->data);} //先序遍历二叉树 void PreOrder_BiTree(BiTree T,Visit visit){...

高分求解C++二叉树的遍历(递归)
答:include <stdio.h> include <malloc.h> typedef struct TP{ int data;struct TP *TLC;struct TP *TRC;}TNode;TNode *MTree()//先序遍历创建二叉树 { TNode *h;int temp;scanf("%d",&temp);if(temp==0){ h=NULL;} else { h=(TNode *)malloc(sizeof(TNode));h->data=temp;h...

用c语言编一个算法 按层次遍历二叉树的结点?
答:// 层次遍历二叉树 // void ReadBitTree(BitNodePtr pRoot){ BitNodePtr pQueue[QUEUE_LENGTH];int head = 0 , tail = 1;pQueue[0] = pRoot;//结束的条件是head向后移动一个位置后,与tail重合 while (head != tail){ printf("%d " , pQueue[head]->data);//左孩子入队列 ...

C语言二叉树的创建和遍历
答:printf("%c",T->data);if((T->lchild)||(T->rchild)){ if(T->lchild){ printf("%c",'(');DisTree(T->lchild);} if(T->rchild){ printf("%c",',');DisTree(T->rchild);printf("%c",')');} } } } //===基于先序遍历算法创建二叉树=== //===要求输入先序序列,其...

C语言递归遍历二叉树
答:void preorder(binTree bt){if(bt!=NULL) //如果到了叶子后(bt=null),就结束函数调用{ printf("%c",bt->data); //先输出节点内容 preorder(bt->lchild); //调用函数,去遍历当前节点的左子树 preorder(bt->rchild);//上面左树执行完成后,调用函数,去遍历当前节点的右子树}...

二叉树中序遍历非递归算法(c语言实现)
答:include <stdio.h> define MAXN 100 /*节点的最大数量,姑且定为100*/ struct Node//二叉树节点 { int data;Node *left,*right;};Node *root;void Load(Node **p);//读取以p为根节点的子树,具体怎么写与本问题无关,省略 void Travel(Node *p)//非递归中序遍历以p为根节点的子树 { N...

...构造一棵二叉树,采用三种递归遍历算法(前序、中序、后序)
答:输出BA 先序输入 中序输出可以修改遍历方式 来改变输出结果。 本回答由电脑网络分类达人 董辉推荐 举报| 答案纠错 | 评论 1 2 那时花开依然 采纳率:59% 擅长: 编程语言 电子数码 烦恼 威海市 手机/通讯 其他回答 你这个问题不对吧?任意输入二叉树的结点个数和结点值,可能能构造很多种二叉树 追问 老师给...