【ShawnZhang】带你看数据结构——第九课:二叉树的存储与遍历

第一种:

依次编号,凡是空着的地方,也标号,将有数字的填入,反之空着

则,父节点若为n,则左子树为2n,右子树为2n+1,通过下标之间的函数关系来判断层数,但你可以想像,如果空的数据比较多,则数组的方法并不适用

接下来说一说结构体的结构

struct tree

{

int left;

int data;

int right;

};

typedef struct tree treenode;

treenode b_tree[15];

最后一种谈谈链式表

struct tree

{

struct tree *left;

int data;

struct tree *right;

}

typedef struct tree treenode;

treenode *b_tree;

在遍历的方法上根据data的位置可以分为前序中序和后序

前序DLR   中序LDR  后序LRD

此处提供前序遍历方法

void preorder(b_tree point)

{

if(point!=NULL)

{

printf("%d",point->data);

preorder(point->left);

preorder(point->right);

}

}

很简单,能看得出来使用的是递归,这是个非常好的方法,如果实在理解不了,强记住就好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值