java层次遍历二叉树

思路很简单。通过队列,先将头结点放入队列,再遍历每个节点的左节点和右节点。

    import java.util.ArrayList;
    import java.util.LinkedList;

    /**
     * 遍历层次二叉树
     * 
     * @author chenjunxu
     *
     */
    public class Main {
        public static void main(String[] args) {
            // 队列
            LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
            // 模拟数据
            TreeNode root = new TreeNode("1");
            TreeNode root2 = new TreeNode("2");
            root.leftTree = root2;
            // 将头节点加入队列
            queue.add(root);
            TreeNode temp = null;
            // 收集结果
            ArrayList<String> resultArray = new ArrayList<String>();
            // 通过while循环,将队列内容全部取出
            while (!queue.isEmpty()) {
                // 取出队列第一个节点
                temp = queue.poll();
                // 该节点若有左子树,则添加至队列尾部
                if (temp.leftTree != null) {
                    queue.add(temp.leftTree);
                }
                // 该节点若有右子树,则添加至队列尾部
                if (temp.rightTree != null) {
                    queue.add(temp.rightTree);
                }
                // 保存结果
                resultArray.add(temp.val);
            }
            // 输出结果
            for (String str : resultArray) {
                System.out.println(str);
            }
        }
    }

    /**
     * 二叉树节点
     * 
     * @author chenjunxu
     *
     */
    class TreeNode {
        public String val = "root";
        public TreeNode leftTree = null;
        public TreeNode rightTree = null;

        public TreeNode(String val) {
            this.val = val;
        }
    }
    原文作者:chenxuxu
    原文地址: https://www.jianshu.com/p/82586925b73e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞