java层次遍历二叉树

作者: chenxuxu | 来源:发表于2016-11-24 20:17 被阅读559次

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

        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;
            }
        }

    相关文章

      网友评论

        本文标题:java层次遍历二叉树

        本文链接:https://www.haomeiwen.com/subject/lwvbpttx.html