数据结构(C语言)二叉树的表示和实现

二叉树

二叉树的顺序存储

按满二叉树的结点层次编号,依次存放二叉树中的数据元素。

若有空节点则不能连续存储,空出位置!

二叉树顺序存储缺点

最坏情况:右单支树,深度为k的且只有k个结点的单支树需要长度为2k-1的一维数组。
特点:结点间蕴含在其存储位置中浪费空间,适合存满二叉树和完全二叉树。

二叉树的链式存储
二叉链表
typedef struct BiNode {
   
	TElemType data;
	struct BiNode* lchild, * rchild;//左右孩子指针
}BiNode,*BiTree;
三叉链表

再增加一个parent指针域指向双亲结点

typedef struct TriTNode {
   
	TElemType data;
	struct TriTNode* child, * parent, * rchild;
}TriTNode,*TriTree;
遍历二叉树
  • 遍历定义 :顺着某一条搜索路径巡访二叉树中的结点,使得每个结点均被访问一次,而且仅被访问一次。
  • 遍历目的 :得到树中所有结点的一个线性排列。
  • 遍历用途 :它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心。
遍历方法

假设: L :遍历左子树 D :访问根节点 R :遍历右子树
规定先左后右:
DLR ——先序遍历
LDR ——中序遍历
LRD ——后序遍历

先序遍历 中序遍历 后序遍历
1.访问根结点 2.先序遍历左子树 3.先序遍历右子树 1.中序遍历左子树 2.访问根结点 3.中序遍历右子树 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点

这里是二叉树的遍历方法,当初学二级公共基础知识(前面十分)的题就不会,点我点我!!!

复制一颗二叉树
Status Copy(BiTree T, BiTree& NewT)
{
   
	if (T == NULL)
	{
   
		NewT = NULL;
		return OK;
	}
	else
	{
   
		NewT = (BiTNode*)malloc(sizeof(BiTree));
		NewT->data = T->data;
		Copy(T->lchild, NewT->lchild);
		Copy(T->rchild, NewT->rchild);
		return OK;
	}
}//Copy
计算二叉树的深度
int Depth(BiTree T)
{
   
	int m = 1;
	int n = 1;
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值