Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  C语言  >  正文 二叉树算法集

二叉树算法集

发布时间:2018-12-07   编辑:www.jquerycn.cn
jquery中文网为您提供二叉树算法集等资源,欢迎您收藏本站,我们将为您提供最新的二叉树算法集资源

#include<stdlib.h>
#include<stdio.h>
#define MAX  50
#define MAS  20
#define CHAR 1
#if CHAR
   typedef char TElemType;
   TElemType Nil=' ';
   #define form "%c"
#else
   typedef int TElemType;
   TElemType Nil=0;
   #define form "%d"
#endif
typedef struct node
{TElemType data;<BR> struct node *left;<BR> struct node *right;<BR> struct node *parent;<BR>}BiTNode,*BiTree;
BiTNode *InitBiTree(BiTNode *bt)
{
 bt=NULL;
 return bt;
}
BiTNode *CreateBiTree(BiTNode *bt)
{TElemType ch;<BR> scanf(form,&ch);<BR> if(ch==Nil) bt=NULL;<BR>  else<BR>  {bt=(BiTNode *)malloc(sizeof(BiTNode));<BR>   if(!bt) exit(0);<BR>   bt->data=ch; bt->parent=NULL;<BR>   bt->left=CreateBiTree(bt->left);<BR>   if(bt->left) bt->left->parent=bt;<BR>   bt->right=CreateBiTree(bt->right);<BR>   if(bt->right) bt->right->parent=bt;<BR>  }
  return bt;
}
void PrintTree(BiTNode *bt,int i)
{ if(bt!=NULL)
  {PrintTree(bt->right,i 5);<BR>   #if CHAR<BR>    if(bt->data!=Nil)<BR>    printf("%*cn",i,bt->data);<BR>   #else<BR>    if(bt->data!=Nil)<BR>    printf("%*dn",i,bt->data);<BR>   #endif<BR>   PrintTree(bt->left,i 5);<BR>   i=i-5;<BR>  }
}
void Prorder1(BiTNode *bt,void(*visit)(TElemType))/*先序遍历*/
{if(bt!=NULL)<BR> {visit(bt->data);<BR>  Prorder1(bt->left,visit);<BR>  Prorder1(bt->right,visit);<BR> }
}
void Prorder2(BiTNode *bt,void(*visit)(TElemType))/*中序遍历*/
{BiTNode *p,*stack[MAS];<BR> int top;<BR> top=0;  p=bt;<BR> while(top!=0||p!=NULL)<BR> {while(p!=NULL)<BR>  {stack[top]=p; top ;<BR>   p=p->left;<BR>  }
  if(top!=0)
  {p=stack[top-1];<BR>   top--;<BR>   visit(p->data);<BR>   p=p->right;<BR>  }
 }
}
void Prorder3(BiTNode *bt,void(*visit)(TElemType))/*后序遍历*/
{BiTNode *p,

您可能感兴趣的文章:
Python中的树你知道吗?
数据结构中树与二叉树基础算法的比较
php 二叉树遍历算法与例子
Python中的二叉排序树和平衡二叉树是什么
二叉链表表示的二叉树及基本操作
数据结构与算法–四叉树(javascript实现)
C 实现二叉查找树过程详解教程【图】
关于二叉树的深度算法题目及解答
java中二叉树遍历(递归) 程序代码
Golang算法:二叉树前序,中序,后序非递归遍历算法

[关闭]