编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,输出其先序、中序、后序遍历第k个访问结点

1.二叉树结点数据类型建议选用字符类型且各结点数据域值互不相同,
2.输出用结点数据域的字符表示;求第k个访问结点的三个子函数中,
3.需使用函数值型和引用型形参带回所求(即每种方式至少使用一次)。

#include "stdio.h"

#include "malloc.h"

#define ELEMTYPE char

BiTNode *bulid() /*建树*/

{ BiTNode *q;

BiTNode *s[20];

int i,j;

char x;

printf("请按顺序输入二叉树的结点以输入0和*号结束\n");

printf("请输入要输入的为第几个结点i=\n");

scanf("%d",&i);

printf("请输入你要输入该结点的数为x=");

getchar();

scanf("%c",&x);

while(i!=0&&x!='*')

{q=(BiTNode*)malloc(sizeof(BiTNode));

q->data=x;

q->rchild=NULL;

q->lchild=NULL;

case(1): preoder(bt); goto k1;

case(2): InOrder(bt); goto k1;

case(3): postOrder(bt); goto k1;

case(0): break;

root=(struct lbtree *)malloc(sizeof(struct lbtree));

root->data=ch;

root->lchild=createbtree();

root->rchild=createbtree();

return(root);

}

dl=treedepth(root->lchild);

dr=treedepth(root->rchild);

if(dl>dr)depth=dl+1;

else depth=dr+1;

扩展资料:

(1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。

(2)满二叉树——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。

(3)平衡二叉树——平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

参考资料来源:百度百科-二叉树

温馨提示:内容为网友见解,仅供参考
无其他回答

...遍历法建立二叉树的二叉链表存储结构,输出其先序、中序、后序...
include "stdio.h"include "malloc.h"define ELEMTYPE char BiTNode *bulid() \/*建树*\/ { BiTNode *q;BiTNode *s[20];int i,j;char x;printf("请按顺序输入二叉树的结点以输入0和*号结束\\n");printf("请输入要输入的为第几个结点i=\\n");scanf("%d",&i);printf("请输入你要输入该结...

...二叉树的二叉链表存储结构,完成二叉树的建立,先序中序后序遍历的操 ...
printf("先序遍历:");print1(Tree);printf("中序遍历");print2(Tree);printf("后序遍历");print3(Tree);printf("\\n深 度:%d \\n",depth(Tree));printf("总结点数:%d \\n",Cnode(Tree));printf("叶子结点数:%d\\n",leaf);}

用递归算法先序中序后序遍历二叉树
1、先序 void PreOrderTraversal(BinTree BT){ if( BT ){ printf(“%d\\n”, BT->Data); \/\/对节点做些访问比如打印 PreOrderTraversal(BT->Left); \/\/访问左儿子 PreOrderTraversal(BT->Right); \/\/访问右儿子 } } 2、中序 void InOrderTraversal(BinTree BT){ if(BT){ InOrde...

用汇编实现二叉树的先序,中序,后序遍历
}BTNode,* BiTree;void CreateBiTree(BiTree &T){\/\/按先序次序输入,构造二叉链表表示的二叉树T,空格表示空树 \/\/ if(T) return;char ch;ch=getchar(); \/\/不能用cin来输入,在cin中不能识别空格。if(ch==' ') T=NULL;else{ if(!(T=(BTNode *)malloc(sizeof(BTNode))) cout<<"m...

1用递归实现二叉树的先序、中序、后序三种遍历。2哈夫曼树问题
1通过调试为下面的二叉树建立二叉链表,并用递归实现二叉树的先序、中序、后序三种遍历。2[基本要求]:A:从终端读入字符集大小为n,及n个字符和n个权值,建立哈夫曼树,进行编码并且... 1通过调试为下面的二叉树建立二叉链表,并用递归实现二叉树的先序、中序、后序三种遍历。2[基本要求]: A:从终端读入字符集...

用VB编写 二叉树的建立与遍历、二叉树的排序
(1)根据先序遍历和中序遍历的序列,建立一棵二叉树(二叉树用二叉链表存储)。(2)分别以先序和中序遍历二叉树,将假设结果与给定的先序和中序遍历序列进行比较,以证明建立二叉树的正确性。(3)给出后序遍历序列。四、实验步骤 (1)编写一个过程,将给出的遍历序列读入一个数组;(2)编...

设已建立的二叉树的三叉链表存储结构中,结点的数据域孩子域一填好内容...
struct Node *lchild; \/\/左孩子指针 struct Node *rchild; \/\/右孩子指针 struct Node *parent; \/\/双亲指针}Bitree;\/\/用 先序扩展序列+递归 创建二叉树void CreateBiTree(Bitree **bt){ char ch; scanf("%c",&ch); \/\/输入数据 if(ch=='#') \/\/'...

设二叉树的存储结构为二叉链表,编写有关二叉树的递归算法:
\/\/中序遍历 void InOrder(BiTree *t){ BiTree **stack, **top, *p;\/\/创建堆栈 if (!(stack = (BiTree**)malloc(NUM_NODE * sizeof(BiTree))){ printf("InOrder failed for memery\\n");return;} \/\/初始化堆栈 top = stack;p = t;while (p || top>stack)\/\/p不为NULL,堆栈...

用C语言建立一棵二叉树,使用二杈链表存储,对其进行后续遍历,输出后序...
include<stdlib.h> define Maxsize 100 typedef int datatype;typedef struct node { datatype data;struct node* lchild;struct node* rchild;}BTNode;void CreatBTNode(BTNode *&b,char * str){ BTNode *p,*st[Maxsize];int top=-1;p=NULL;b=NULL;int j=0,k;char ch=str[j];while(ch...

建立二叉链表存储下图所示的二叉树
建立二叉链表存储下图所示的二叉树 我们使用C语言实现了一个程序来建立和操作二叉树。程序中定义了一个二叉树节点结构体BTNode,包含数据数据域data,左孩子lchild和右孩子rchild。程序包括创建树、前序遍历、中序遍历和后序遍历四个函数。创建树函数CreateTree()通过接收一个字符数组str,按照括号和逗号的...

相似回答