关于 树(tree)结构

1,  什么是树状结构?

其基本定义是:一个或多个节点构成的集合,并且有一个节点为根节点,其余的子节点也都是树结构;

2.二叉树:树中每一个节点的子节点之多为2

3,树的节点的定义:

typedef struct tnode{

char data;

struct *tnode left,*tnode right;

}TNODE

TNODE *tree //声明了一个树的节点;

4,二叉树的遍历:

先序;root—left---right

中序:left—root—right

后序:left—right—root

中序遍历实例程序:

void inorder(TNODE *p){

if(p!=NULL){

inorder(p->left);

printf(“%c”,p->data);

inorder(p->right);

}

}

//后序遍历的实例代码:

void afterorder(TNODE *p){

if(p!=NULL){

afterorder(p->left);

afterorder(p->right);

printf(“%c”,p->data);

 

}

}

//先序遍历的实例代码:

void frontorder(TNODE *p){

if(p!=NULL){

printf(“%c”,p->data);

frontorder(p->left);

frontorder(p->right);

}

}

5:中序遍历二叉树的使用----排序

用待排序的各个数据元素,建立这样一棵树:其节点的值是按 LEFT ROOT RIGHT 有序排列的。然后对此树进行中序遍历就得到有序排序;具体步骤如下:

(1)       以第一个数据元素作为根元素

(2)       把剩余的元素与根节点进行比较大小,大则放其右边,小则放其左边,这样循环下去;

(3)       中序遍历新建树;

写了一个单片机中断的程序:就是发送一个字符,然后会中断输出相应内容,可是这个程序只能实现一次,就是第二次不进入中断,百思不得其解?

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit LED=P0^0;

uchar a;

void delay(uint x)

{

     uchar i;

     while(x--)

     for(i=0; i<120; i++);

}

//接收中断子程序

void suart()interrupt 4 using 1

  {

              uchar a;

              a=SBUF;

         switch(a)

              {

                 case 'C':  LED=~LED; SBUF=0x11; delay(500); break;

            case 'D':  LED=~LED; SBUF=0x22; delay(500); break;

        

              }

           RI=0;

  }

 

 void main()

{

    

        

     delay(500);

     P0=0x00;

          TMOD=0x20;//SETUP T1 AT MODE 2,自动重载八位定时器

     PCON=0x00;

     SCON=0x70;//串口模式1

          TH1=TL1=0XFD;//定时器初值

          TR1=1;//启动定时器1,SETB TR1;

          IE=0X90;//打开总中断和串口总中断,10010000

        

     while(1);

}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

最后发现:串口输出也是中断。。。。。。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值