二叉树的遍历--递归及非递归实现
2016-05-08 09:12
148 查看
二叉树的遍历分为前序,中序和后序遍历,层序遍历与深度遍历方法也很重要。
在这里,深度遍历方法用到了栈这种数据结构,广度遍历方法用到了队列这种数据结构。
1.二叉树的链式存储
typedef char datatype; typedef struct BinNode{ datatype data; struct BinNode* lchild; struct BinNode* rchild; }BinNode; typedef BinNode* bintree;
2.遍历的实现--递归实现
//前序遍历 void preorder(bintree t){ if(t){ printf("%c",t->data); if(t->lchild) preorder(t->lchild); if(t->rchild) preorder(t->rchild); } } //中序遍历 void midorder(bintree t){ if(t){ if(t->lchild) midorder(t->lchild); printf("%c",t->data); if(t->rchild) preorder(t->rchild); } }
3.遍历的实现--非递归实现
//二叉树深度优先遍历,是使用栈结构 ; 广度优先搜索类似,实用的是队列结构 public void depthOrderedTravel(){ if(root==null){ System.out.print("二叉树为空"); return 0; } ArrayDeque<treeNode> stack = new ArrayDeque<treeNode>(); stack.push(root); while(stack.imEmpty()==false){ treeNode node = stack.pop(); System.out.print(node.value+" "); if(node.right!=null) stack.push(node.left); if(node.left!=null) stack.push(node.right); } }
相关文章推荐
- 第四章:用户和组管理
- 3D 游戏控制
- nginx
- paoracle中的包头(Package)与包体(Package body)
- Hash Compared & ELFHash 详解
- map同步数据库/后台缓存
- 中国互联网或将被世界淘汰 !
- nginx的启动与关闭
- Linux下常用的C/C++开源Socket库
- linux下C++开发工具
- C++ explicit关键字
- Spark中的二次排序
- Linux C++学习之路
- c++实验5-数组分离
- Python常用知识点汇总
- My first article
- HDU1106 排序
- Linux多线程编程
- Android Studio引入ButterKnife 8.0.1版本
- 矩阵手册(三)