您当前的位置: 首页 >  Java

梁同学与Android

暂无认证

  • 4浏览

    0关注

    618博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

数据结构-简单实现二叉树的先序、中序、后序遍历(java)

梁同学与Android 发布时间:2019-09-25 15:19:32 ,浏览量:4

第一步:创建一颗二叉树

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 {  
    /**
     * 二叉树的先序中序后序排序 
     */  
    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) {
    		theFirstTraversal(root.getLeftNode());
    	}
    	printNode(root);
    	if(root.getRightNode()!=null) {
    		theFirstTraversal(root.getRightNode());
    	}
    }
    //后序遍历
    public void thePostOrderTraversal(Node root) {
    	if(root.getLeftNode()!=null) {
    		theFirstTraversal(root.getLeftNode());
    	}
    	if(root.getRightNode()!=null) {
    		theFirstTraversal(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("");  
    }  
}  
关注
打赏
1660730345
查看更多评论
立即登录/注册

微信扫码登录

0.0822s