数据结构BinaryTree实例(二):二叉树的中序遍历(递归与非递归)
来源:互联网 发布:淘宝装修日记哪里去了 编辑:程序博客网 时间:2024/06/04 22:38
/**
*@Title: InOrder.java
*@Package binarytree
*@Description: TODO
*@author peidong
*@date 2017-4-28 上午8:33:25
*@version V1.0
*/
packagebinarytree;
importjava.util.Stack;
importbinarytree.PreOrderBinaryTree.TreeNode;
/**
* @ClassName: InOrder
* @Description:实现二叉树的中序遍历
* @date 2017-4-28 上午8:33:25
*
*/
publicclass InOrder {
/**
*@ClassName: TreeNode
* @Description: 构建树结点
* @date 2017-4-28 上午8:34:06
*/
public static class TreeNode{
public int data;
public TreeNode left;
public TreeNode right;
public TreeNode(int data){
this.data = data;
left = null;
right = null;
}
}
/**
*
* @Title: InOrder
* @Description: 递归中序遍历二叉树
* @param @param root
* @return void
* @throws
*/
public void inOrderRec(TreeNode root){
//边界条件
if(root ==null){
return;
}else{
inOrderRec(root.left);
System.out.println(root.data);
inOrderRec(root.right);
}
}
/**
*
* @Title: InOrder
* @Description: 非递归中序遍历二叉树
* @param @param root
* @return void
* @throws
*/
public void inOrder(TreeNode root) {
// 边界条件
if (root == null) {
return;
}
Stack<TreeNode> tnSatck =new Stack<TreeNode>();
while (root != null ||tnSatck.empty() == false) {
while (root != null) {
tnSatck.push(root); //左子树入栈
root = root.left;
}
if (tnSatck.empty() ==false) {
root =tnSatck.pop(); //弹出栈顶元素
System.out.println(root.data); //输出
root =root.right; //遍历右子树
}
}
}
/**
*@Title: main
*@Description: TODO
*@param @param args
*@return void
*@throws
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
InOrder tree = new InOrder();
TreeNode root = new TreeNode(10);
root.left = new TreeNode(8);
root.right = new TreeNode(2);
root.left.left = new TreeNode(3);
root.left.right = new TreeNode(5);
root.right.left = new TreeNode(2);
tree.inOrder(root);
}
}
- 数据结构BinaryTree实例(二):二叉树的中序遍历(递归与非递归)
- 数据结构BinaryTree实例(三):二叉树的后序遍历(递归与非递归)
- 数据结构BinaryTree实例(一):先序遍历二叉树(递归与非递归)
- 【数据结构】二叉树的遍历(递归与非递归)
- 【数据结构与算法】二叉树的遍历(递归遍历、非递归遍历、层序遍历)
- 【数据结构】二叉树(前、中、后)序遍历的递归与非递归算法
- 数据结构:二叉树的前序,中序,后序遍历(递归和非递归)
- 二叉树的先序、中序、后序遍历方法(递归与非递归方法)——《数据结构》
- 数据结构——二叉树的递归与非递归遍历(先序,中序,后序)
- 递归构建二叉树---中序遍历二叉树(递归与非递归)
- 【经典面试题二】二叉树的递归与非递归遍历(前序、中序、后序)
- [数据结构] 二叉树的递归与非递归遍历
- 二叉树的前序、中序、后序遍历(递归与非递归)
- 二叉树的递归与非递归遍历(前序、中序、后序)
- 二叉树的递归与非递归遍历(前序、中序、后序)
- 二叉树的递归与非递归遍历(前序、中序、后序)
- 二叉树的递归与非递归遍历(前序、中序、后序)
- JAVA实现二叉树的前、中、后序遍历(递归与非递归)
- Hadoop2.X Yarn框架原理及运作机制
- 关于微信支付第一次成功,后面就不成功的坑。。。。
- BZOJ4169: Lmc的游戏
- Map和Map<key,value>及Map<String, ?>的区别
- C#——文件分割与合并
- 数据结构BinaryTree实例(二):二叉树的中序遍历(递归与非递归)
- 在CentOS 7中安装Redis 3.2.8
- Linux中重置mysql密码
- 创建连续储存数组
- Log4j日志存放位置及相关基础配置
- WebSocket能干啥
- JavaScript实现复制,粘贴,撤销,保存打开文件等操做
- 常规功能和模块自定义系统—062快速架构(quickbuild)开源版发布
- 自然语言处理(NLP)入门学习资源清单