【数据结构】二叉树的创建和遍历(先序、中序、后序) |
您所在的位置:网站首页 › 怎么由前序遍历和中序遍历画出他的二叉树 › 【数据结构】二叉树的创建和遍历(先序、中序、后序) |
先序遍历: 递归: 若二叉树为空,则遍历结束;否则 ⑴ 访问根结点;⑵ 先序遍历左子树(递归调用本算法);⑶ 先序遍历右子树(递归调用本算法)。 非递归:若二叉树为空,则返回;否则,令p=T;⑴ 访问p所指向的结点;⑵ q=p->Rchild ,若q不为空,则q进栈;⑶ p=p->Lchild ,若p不为空,转(1),否则转(4);⑷ 退栈到p ,转(1),直到栈空为止。 中序遍历: 递归:若二叉树为空,则遍历结束;否则⑴ 中序遍历左子树(递归调用本算法);⑵ 访问根结点;⑶ 中序遍历右子树(递归调用本算法)。 非递归: 若二叉树为空,则返回;否则,令p=T⑴ 若p不为空,p进栈, p=p->Lchild ;⑵ 否则(即p为空),退栈到p,访问p所指向的结点;⑶ p=p->Rchild ,转(1);直到栈空为止。 后序遍历: 递归: 若二叉树为空,则遍历结束;否则⑴ 后序遍历左子树(递归调用本算法);⑵ 后序遍历右子树(递归调用本算法) ;⑶ 访问根结点 。 非递归:若二叉树为空,则返回;否则,令p=T;⑴ 第一次经过根结点p,不访问;p进栈S1 , tag 赋值0,进栈S2,p=p->Lchild 。⑵ 若p不为空,转(1),否则,取状态标志值tag : ⑶ 若tag=0:对栈S1,不访问,不出栈;修改S2栈顶元素值(tag赋值1) ,取S1栈顶元素的右子树,即p=S1[top]->Rchild ,转(1);⑷ 若tag=1:S1退栈,访问该结点; 直到栈空为止。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |