遍历顺序:根节点→左孩子→右孩子; 具体算法思想:将二叉树的根结点赋值给遍历的指针,由该指针进行遍历;若当前节点存在,则输出当前节点的相关数据并做入栈操作(将该节点的地址存入栈中),继而访问其左孩子;执行如上操作,直到当前节点为空,做出栈操作并访问其右孩子,再重复如上操作,直至当前节点不存在且栈为空; 具体遍历过程如图: 遍历顺序:左孩子→根节点→右孩子; 具体算法思想:将二叉树的根结点赋值给遍历的指针,由该指针进行遍历;若当前节点存在,则将该节点做入栈操作并访问其左孩子,执行如上操作,直到当前节点为空,取栈顶元素做出栈操作并将其相关的数据输入,然后访问其右孩子,再重复如上操作,直至当前节点不存在且栈为空(中序遍历和前序遍历的不同在于:前序遍历是入栈的同时输出元素,而中序遍历是出栈的同时输出元素); 具体遍历过程如图: ps:后续遍历较为繁杂,本人能力有限在此不做过多解释,这是第一篇博客,若有错误,欢迎您的指点,感谢您的观看.
二叉树的非递归遍历(前序和后序)
1.前序遍历
算法代码实现如下:void preorder( BinTree t) { Stack S; InitStack(S); BinTree temp = t;//定义指针temp用于遍历二叉树 while(temp != NULL || GetTop(S)!= NULL) { while(temp != NULL)//遍历左孩子并输出 { printf("%c",temp->ch); Push(S,temp); temp = temp->left; } if(GetTop(S)!=NULL)//若当前节点为空,则取栈顶元素出栈并访问右孩子 { temp=GetTop(S); Pop(S); temp = temp->right; } } printf("n"); }
2.中序遍历
算法代码实现如下:void Inorder( BinTree t) { Stack S; InitStack(S); BinTree temp = t;//定义指针temp用于遍历二叉树 while(temp != NULL || GetTop(S)!= NULL) { while(temp != NULL)//遍历左孩子 { Push(S,temp); temp = temp->left; } if(GetTop(S)!=NULL)//若当前节点为空,则取栈顶元素出栈并输出然后访问右孩子 { temp=GetTop(S); printf("%c",temp->ch); Pop(S); temp = temp->right; } } printf("n"); }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算