二叉树的前序,中序,后序遍历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
原创粉丝点击