一、二叉树

1.0 二叉树的存储用以下形式的链表就可以。
在这里插入图片描述
【注】先序、中序、后序是以根节点的print顺序来划分的。
【注】先序、中序、后序三次遍历路径是一样的,只是print的地方不同,也就是想要操作数据的地方不同。

(1) 先序、中序遍历

【注】本质上都是利用堆栈来处理节点。

  1. 非递归先序遍历:
    在这里插入图片描述
  2. 递归代码:
void InOrderTraversal(BinTree BT)
{
	if(BT)
	{
		std::cout<<BT->left->Data;
		InOrderTraversal(BT->left);
		// 两次递归函数中间就是中序
		InOrderTraversal(BT->right);
		// 两次递归函数之后就是后续
	}
}
  1. 后续的非递归代码需要一点改动。

(2)层序遍历

【注】层序遍历时利用队列来处理节点:流程如下:
在这里插入图片描述
在这里插入图片描述

文字描述:
1 根节点A入对;
2 A 出队,同时B C 入队
3 B 出队,同时D F 入队;C出队,同时G I入队,以此类推。(按层处理由此而来)

在这里插入图片描述
代码:
在这里插入图片描述

二、一般树

1.0 一般书采用儿子-兄弟法来存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值