`
magaojie6
  • 浏览: 6016 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java实现前序中序后序

 
阅读更多
public class Node { 
    private int data; 
    private Node leftNode; 
    private Node rightNode; 
    public Node(int data, Node leftNode, Node rightNode){ 
        this.data = 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; 
    } 
}
public class BinaryTree { 
    /**
     * @author yaobo
     * 二叉树的先序中序后序排序
     */ 
    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()); 
    } 
    public void theFirstTraversal(Node root) {  //先序遍历 
        printNode(root); 
        if (root.getLeftNode() != null) {  //使用递归进行遍历左孩子 
            theFirstTraversal(root.getLeftNode()); 
        } 
        if (root.getRightNode() != null) {  //递归遍历右孩子 
            theFirstTraversal(root.getRightNode()); 
        } 
    } 
    public void theInOrderTraversal(Node root) {  //中序遍历 
        if (root.getLeftNode() != null) { 
            theInOrderTraversal(root.getLeftNode()); 
        } 
        printNode(root); 
        if (root.getRightNode() != null) { 
            theInOrderTraversal(root.getRightNode()); 
        } 
    }
   
   
    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(""); 
    } 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics