二叉树的前序,中序,后序遍历Java实现
来源:互联网 发布:java 异或运算符 编辑:程序博客网 时间:2024/06/12 19:35
1.二叉树原图
2.详细代码
/** *Project Name: ml *File Name: Node.java *Package Name: binarytreetraverse *Date: 2017年11月3日 下午3:36:41 *Copyright (c) 2017,578888218@qq.com All Rights Reserved.*/package binarytreetraverse;/** *Title: Node<br/> *Description: *@Company: XXXX<br/> *@author: 刘云生 *@version: v1.0 *@since: JDK 1.8.0_40 *@Date: 2017年11月3日 下午3:36:41 <br/>*/public class Node {private int data; private Node leftNode; private Node rightNode;public Node(int data, Node leftNode, Node rightNode) {this.setData(data);this.leftNode = leftNode;this.rightNode = rightNode;}public int getData() {return data;}public void setData(int data) {this.data = data;}public Node getLeftNode() {return leftNode;}public void setLeftNode(Node leftNode) {this.leftNode = leftNode;}public Node getRightNode() {return rightNode;}public void setRightNode(Node rightNode) {this.rightNode = rightNode;} }
/** *Project Name: ml *File Name: BinaryTree.java *Package Name: binarytreetraverse *Date: 2017年11月3日 下午3:38:39 *Copyright (c) 2017,578888218@qq.com All Rights Reserved.*/package binarytreetraverse;/** * Title: BinaryTree<br/> * Description: * * @Company: XXXX<br/> * @author: 刘云生 * @version: v1.0 * @since: JDK 1.8.0_40 * @Date: 2017年11月3日 下午3:38:39 <br/> */public class BinaryTree {public Node init() {// 注意必须逆序建立,先建立子节点,再逆序往上建立,因为非叶子结点会使用到下面的节点,而初始化是按顺序初始化的,不逆序建立会报错Node J = new Node(8, null, null);Node H = new Node(4, null, null);Node G = new Node(2, null, null);Node F = new Node(7, null, J);Node E = new Node(5, H, null);Node D = new Node(1, null, G);Node C = new Node(9, F, null);Node B = new Node(3, D, E);Node A = new Node(6, B, C);return A; // 返回根节点}public void printNode(Node node) {System.out.print(node.getData());}/** * 先序遍历 * @Title: theFirstTraversal * @Description: TODO * @param: @param root * @return: void * @author: 刘云生 * @Date: 2017年11月3日 下午4:06:52 * @throws */public void theFirstTraversal(Node root) { printNode(root);if (root.getLeftNode() != null) { // 使用递归进行遍历左孩子theFirstTraversal(root.getLeftNode());}if (root.getRightNode() != null) { // 递归遍历右孩子theFirstTraversal(root.getRightNode());}}/** * 中序遍历 * @Title: theInOrderTraversal * @Description: TODO * @param: @param root * @return: void * @author: 刘云生 * @Date: 2017年11月3日 下午4:06:08 * @throws */public void theInOrderTraversal(Node root) { if (root.getLeftNode() != null) {theInOrderTraversal(root.getLeftNode());}printNode(root);if (root.getRightNode() != null) {theInOrderTraversal(root.getRightNode());}}/** * 后序遍历 * @Title: thePostOrderTraversal * @Description: TODO * @param: @param root * @return: void * @author: 刘云生 * @Date: 2017年11月3日 下午4:05:42 * @throws */public void thePostOrderTraversal(Node root) { if (root.getLeftNode() != null) {thePostOrderTraversal(root.getLeftNode());}if (root.getRightNode() != null) {thePostOrderTraversal(root.getRightNode());}printNode(root);}public static void main(String[] args) {BinaryTree tree = new BinaryTree();Node root = tree.init();System.out.println("先序遍历");tree.theFirstTraversal(root);System.out.println("");System.out.println("中序遍历");tree.theInOrderTraversal(root);System.out.println("");System.out.println("后序遍历");tree.thePostOrderTraversal(root);System.out.println("");}}
3.输出结果
先序遍历631254978中序遍历123456789后序遍历214538796
阅读全文
0 0
- JAVA实现二叉树的前、中、后序遍历
- 二叉树的遍历问题-----Java实现(中序、前序、后序、遍历)
- java 实现二叉树深度优先遍历的 前、中、后序遍历(递归)
- java实现根据前序遍历构建二叉树(前序遍历、中序遍历、后序遍历)
- 二叉树的非递归前序,中序,后序遍历的Java实现
- 二叉树的前序,中序,后序和层序遍历java实现
- 用java实现二叉树非递归的前序,中序,后序遍历算法
- 二叉树的前序、中序、后序(递归、非递归)遍历java实现
- Java迭代实现二叉树的前序、中序、后序遍历
- 二叉搜索树的中序 前序 后序遍历JAVA实现
- Java实现二叉树的前序、中序、后序遍历(递归方法)
- Java实现二叉树的前序、中序、后序遍历(非递归方法)
- java 实现排序二叉树的插入和前序,中序,后序遍历
- 二叉树的前序、中序、后序遍历Java实现
- Java实现二叉树的前序、中序、后序以及层次遍历
- 二叉树的前序,中序,后序遍历Java实现
- JAVA实现二叉树的前、中、后序遍历(递归与非递归)
- 非递归实现二叉树的后序遍历、前序遍历、中序遍历
- 测试基本流程2
- 线段树(区间修改,单点查询)
- OOP思想
- 在centos7服务器上安装anaconda和jupyter notebook
- [arc078f]Mole and Abandoned Mine
- 二叉树的前序,中序,后序遍历Java实现
- retrofit简单的get请求
- spring boot 1.5.7 搭建基础项目框架二 错误: 找不到或无法加载主类
- CSS3去除点input、button击后的出现的边框
- 移植u-boot-2012.04----支持NORFlash启动
- WPF中Brush的派生类,实例发光的小球
- mybatis中动态sql常用的标签
- MySql数据库面试
- graphviz Windows中文乱码