美文网首页
从上往下打印二叉树

从上往下打印二叉树

作者: 凯玲之恋 | 来源:发表于2020-12-05 20:36 被阅读0次

    题目描述

    从上往下打印出二叉树的每个节点,同层节点从左至右打印。

    思路

    1、利用队列进行层次遍历
    2、每次弹出队列中的一个元素,并把左右孩子加入队列即可

    代码

    
    /**
     * 题目:
     * 从上往下打印二叉树 -- newcoder 剑指Offer 22
     * 
     * 题目描述:
     * 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
     */
    public class PrintFromTopToBottom
    {
    
        static class TreeNode {
            int val;
            TreeNode left;
            TreeNode right;
            TreeNode(int x) { val = x; }
        }
        
        /**
         * 思路:
         * 1、利用队列进行层次遍历
         * 2、每次弹出队列中的一个元素,并把左右孩子加入队列即可
         */
        public ArrayList<Integer> printFromTopToBottom(TreeNode root) {
            ArrayList<Integer> cache = new ArrayList<>();
            
            if (root == null) {
                return cache;
            }
            
            // 初始化队列
            Queue<TreeNode> q = new LinkedList<>();
            q.add(root);
            
            // 当前处理的节点
            TreeNode curNode;
            
            while (!q.isEmpty()) {
                // 弹出队列中的一个元素
                curNode = q.poll();
                
                cache.add(curNode.val);
                
                // 左右孩子入队列
                if (curNode.left != null) {
                    q.offer(curNode.left);
                }
                if (curNode.right != null) {
                    q.offer(curNode.right);
                }
            }
    
            return cache;
        }
        
        public static void main(String[] args)
        {
    
            TreeNode root = createBinaryTree();
            System.out.println(new PrintFromTopToBottom().printFromTopToBottom(root));
        }
        
        private static TreeNode createBinaryTree() {
            TreeNode root = new TreeNode(0);
            TreeNode node1 = new TreeNode(1);
            TreeNode node2 = new TreeNode(2);
            
            root.left = node1;
            root.right = node2;
            
            TreeNode node3 = new TreeNode(3);
            node1.left = node3;
            
            return root;
        }
    
    
    }
    
    

    参考

    从上往下打印二叉树(Java)

    相关文章

      网友评论

          本文标题:从上往下打印二叉树

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