数据结构-二叉树

二叉树

定义:二叉树是节点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的互不相交的二叉树组成。

  1. 顺序存储结构
    定义:就是用一组连续的存储单元存放二叉树中的节点。
    二叉树顺序存储

  2. 链式存储结构
    (1)定义:用二叉链表来存储一颗二叉树,每个节点用一个链节点来存储。
    |lchild |data |rchild |
    |–|--|–|--|
    data:存放数据;
    lchild:左指针;
    rchild:右指针;
    (2)链表结构定义:

    typedef char TElemType;//元素数据类型
     typedef struct node{
    	TElemType data;//数据域;
    	struct node *lchild;//左指针域;
    	struct node *rchild;//右指针域;
    }BTNode, *BInTree;//定义二叉树;
    
  3. 二叉树遍历
    二叉树遍历
    (1)先序遍历(根-左-右)
    遍历结果:ABDEGCF
    代码如下:

    void preorder(BTNode *p){
    	if(p!=NULL){
    		printf("%d",p->data);//访问根节点;
    		preorder(p->lchild);//先序遍历左子树;
    		preorder(p->rchild);//先序遍历右子树;
    		}
    	}
    

(2)中序遍历(左-根-右)
遍历结果:DBGEACF
代码如下:

void inorder(BTNode *p){
 		if(p!=NULL){
 			inorder(p->lchild);//先序遍历左子树;
 			printf("%d",p->data);//访问根节点;
 			inorder(p->rchild);//先序遍历右子树;
 			}
 		}

(3)后序遍历(左-右-根)
遍历结果:DGEBFCA
代码如下:

 void postorder(BTNode *p){
 		if(p!=NULL){
 			postorder(p->lchild);//先序遍历左子树;
 			postorder(p->rchild);//先序遍历右子树;
 			printf("%d",p->data);//访问根节点;
 			}
 		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值