剑指offer-27.从上往下打印二叉树(层次遍历)(171)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_38332722/article/details/100541976

27.从上往下打印二叉树(层次遍历)(171)

  • 题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。

  • 代码:

    package _28.从上往下打印二叉树;
    
    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.Queue;
    /**
     * 题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
     * @author Administrator
     *
     */
    public class PrintFromTopToBottom {
        public ArrayList<Integer> printFromTopToBottom(TreeNode root) {
            ArrayList<Integer> list = new ArrayList<>();
            if(root == null) 
            	return list;
            
            //利用队列来保存根元素,以便按顺序访问其孩子节点
            Queue<TreeNode> queue = new LinkedList<>();
            TreeNode node = root;
            queue.add(node);
            while(!queue.isEmpty()){
            	node = queue.remove();
            	list.add(node.val);
            	if(node.left != null){
            		queue.add(node.left);
            	}
            	if(node.right != null){
            		queue.add(node.right);
            	}
            }
            return list;
        }
        
        public static void main(String[] args) {
        	TreeNode root = new TreeNode(0);
    		TreeNode node1 = new TreeNode(1);
    		TreeNode node2 = new TreeNode(2);
    		TreeNode node3 = new TreeNode(3);
    		TreeNode node4 = new TreeNode(4);
    		root.left = node1;
    		root.right = node2;
    		node1.left = node3;
    		node1.right = node4;
    		
    		PrintFromTopToBottom print = new PrintFromTopToBottom();
    		ArrayList<Integer> list = print.printFromTopToBottom(root);
    		System.out.println(list);
    	}
    }
    class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    }
    

猜你喜欢

转载自blog.csdn.net/qq_38332722/article/details/100541976