文章预览:
一、二叉树
1.0 二叉树的存储用以下形式的链表就可以。
【注】先序、中序、后序是以根节点的print顺序来划分的。
【注】先序、中序、后序三次遍历路径是一样的,只是print的地方不同,也就是想要操作数据的地方不同。
(1) 先序、中序遍历
【注】本质上都是利用堆栈来处理节点。
- 非递归先序遍历:
- 递归代码:
void InOrderTraversal(BinTree BT)
{
if(BT)
{
std::cout<<BT->left->Data;
InOrderTraversal(BT->left);
// 两次递归函数中间就是中序
InOrderTraversal(BT->right);
// 两次递归函数之后就是后续
}
}
- 后续的非递归代码需要一点改动。
(2)层序遍历
【注】层序遍历时利用队列来处理节点:流程如下:
文字描述:
1 根节点A入对;
2 A 出队,同时B C 入队
3 B 出队,同时D F 入队;C出队,同时G I入队,以此类推。(按层处理由此而来)
代码:
二、一般树
1.0 一般书采用儿子-兄弟法来存储。