树和森林都有两种遍历方法,分别为先序遍历和后序遍历。但对于森林的后序遍历,有些教材叫中序遍历,其实它们是同一种遍历方法,只是叫法不同。而二叉树的遍历方式有先序遍历,中序遍历,后序遍历和层次遍历。树或森林转化为二叉树后,树或森林的先序遍历对应二叉树的先序遍历,树或森林的后序遍历对应二叉树的中序遍历。
一、树的三种存储方式
(1)双亲表示法(一般按层序存储,实际是一个静态链表)

(2)孩子链表表示法(与图的邻接表极为相似)

(3)孩子-兄弟存储方表示法

二、二叉树的深度优先遍历和广度优先遍历
分别相当于二叉树按照先序遍历和层次遍历的方法进行遍历
三、算法代码
(1)二叉树层次遍历算法
void level(BTnode *p) {
int font,rear;
BTnode *que[maxSize];
front=rear=0;
BTnode *q;
if(p!=NULL) {
rear=(rear+1)%maxSize;
que[rear]=p;
while(front !=rear) {
front=(front+1)%maxSize;
q=que[front];
Visit(q);
if(q->lchild !=NULL) {
rear=(rear+1)%maxSize;
que[rear]=q->lchild;
}
if(q->rchild!=NULL) {
rear=(rear+1)%maxSize;
que[rear]=q->rchild;
}
}
}
}
(2)二叉树中序遍历算法
void inorderNonrecursion(BTnode *bt) {
if(bt !=NNLL) {
BTNode *stack[maxSize];
int top=-1;
BTNode *p;
p=bt;
while(top !=-1||p !=NULL) {
while(top !=NULL) {
Stack[++top]=p;
p=p->lchild;
}
if(rop !=-1) {
p=stack[top–];
Visit(p);
p=p->rchild;
}
}
}
}
相关文章:
他是明朝三大才子之一,明朝第一位内阁首辅,最后竟被埋雪堆里冻死 04-19
明朝皇帝子嗣,6位子嗣繁多,为何其中10位都没有后代? 04-19
由“皇帝赏赐”到“自我创新”,从服饰变化看明朝宦官官服 04-19
看看大明朝聊聊司礼监,是什么机构,和东厂、西厂、锦衣卫啥关系 04-19
唐朝和尚诗人 ?唐代著名的十五位诗僧,每人一首代表诗 04-19
代国是什么朝代 ,代国在什么地方,国都是哪里? 04-18
明朝历任户部尚书 ,平均两年一人,为何却有人干了27年 04-18
宗藩楷模——明朝的十大有名人物 04-18
明朝末期皇帝是谁?怎么死的? 04-18
纳兰性德朝代 铁岭名人:清初著名词人 04-18