java实现二叉树层序,前序及中序遍历

java实现二叉树层序,前序及中序遍历。直接贴代码吧。。。

import java.util.LinkedList;

/**
 * java实现二叉树遍历
 * @author uiao
 * @date 2018/2/27
 */
public class Order {

    /*
    * 层序遍历
    * */
    public void levelOrder(Node root) {
        if (root == null){
            return;
        }
        Node currentNode = null;
        LinkedList<Node> queue = new LinkedList<Node>();
        queue.offer(root); // 将根节点入队
        while (!queue.isEmpty()){
            currentNode = queue.poll(); // queue队列的队头元素出队
            System.out.println(currentNode.value); // 打印当前节点的数据
            if (currentNode.left != null){
                queue.offer(currentNode.left);
            }
            if (currentNode.right != null){
                queue.offer(currentNode.right);
            }
        }
    }

    /*
    * 前序遍历
    * */
    public void preOrder(Node node){ // 第一个传进来节点的是根节点
        if (node != null){
            System.out.println(node.value);
            this.preOrder(node.left); // 如果左节点不为空就会一直进行下去
            this.preOrder(node.right);
        }
    }

    /*
    * 中序遍历
    * */
    public void midOrder(Node node){
        if (node != null){
            this.midOrder(node.left); // 当左节点为空时,也就是当前节点是最左。println将会第一次执行
            System.out.println(node.value);
            this.midOrder(node.right);
        }
    }
    
    class Node{
        public int value;
        public Node left;
        public Node right;
    }

}

猜你喜欢

转载自blog.csdn.net/fanxing1964/article/details/79392352
今日推荐