不多说,直接看图和代码
要遍历的二叉树
package com.lyj.test; public class Test { /** * @param args */ public static void main(String[] args) { // 初始化节点 BTNode n1 = new BTNode(15); BTNode n2 = new BTNode(4); BTNode n3 = new BTNode(20); BTNode n4 = new BTNode(1); BTNode n5 = new BTNode(16); BTNode n6 = new BTNode(25); // n1左右子树 n1.setLeftChild(n2); n1.setRightChild(n3); // n2左子树 n2.setLeftChild(n4); // n3左右子树 n3.setLeftChild(n5); n3.setRightChild(n6); /* * 各种遍历 */ Traversal traversal = new Traversal(); // traversal.preorder(n1); // traversal.inorder(n1); traversal.postorder(n1); } } /* * 结点 */ class BTNode { private int value; private BTNode leftChild, rightChild; public BTNode() { value = 0; leftChild = null; rightChild = null; } public BTNode(int value, BTNode leftChild, BTNode rightChild) { this.value = value; this.leftChild = leftChild; this.rightChild = rightChild; } public BTNode(int value) { this(value, null, null); } public BTNode getLeftChild() { return leftChild; } public void setLeftChild(BTNode leftChild) { this.leftChild = leftChild; } public BTNode getRightChild() { return rightChild; } public void setRightChild(BTNode rightChild) { this.rightChild = rightChild; } public int getValue() { return value; } } /* * 遍历 */ class Traversal { // 前序遍历 public void preorder(BTNode rootNode) { if (rootNode != null) { System.out.print(rootNode.getValue() + " "); preorder(rootNode.getLeftChild()); preorder(rootNode.getRightChild()); } } // 中序遍历 public void inorder(BTNode rootNode) { if (rootNode != null) { inorder(rootNode.getLeftChild()); System.out.print(rootNode.getValue() + " "); inorder(rootNode.getRightChild()); } } // 后序遍历 public void postorder(BTNode rootNode) { if (rootNode != null) { postorder(rootNode.getLeftChild()); postorder(rootNode.getRightChild()); System.out.print(rootNode.getValue() + " "); } } }