zoukankan      html  css  js  c++  java
  • 剑指Offer--把二叉树打印成多行

    题目 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行;
    思路 运用两个辅助链表分别记录当前行,以及下一行的节点。
    自己写的low代码

    import java.util.ArrayList;
    
    
    /*
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    */
    public class Solution {
       public  ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {		ArrayList<ArrayList<Integer>> nodesValue = new ArrayList<ArrayList<Integer>>();// 分行返回;
    		if (pRoot == null) {
    			return nodesValue;
    		}
    		ArrayList<TreeNode> currentLay = new ArrayList<TreeNode>();// 需要打印的层;
    		currentLay.add(pRoot);
    		ArrayList<TreeNode> nextLay = new ArrayList<TreeNode>();// 下一层;
    
    		while (!currentLay.isEmpty()) {
    			ArrayList<Integer> rows = new ArrayList<Integer>();
    			for (int i = 0; i < currentLay.size(); i++a) {
    				rows.add(currentLay.get(i).val);
    				System.out.print(currentLay.get(i).val + " ");
    				if (currentLay.get(i).left != null) { //注意判空;
    					nextLay.add(currentLay.get(i).left);
    				}
    
    				if (currentLay.get(i).right != null) { //注意判空;
    					nextLay.add(currentLay.get(i).right);
    				}
    
    			}
    			nodesValue.add(rows);
    			currentLay.clear();
    			currentLay.addAll(nextLay);
    			// rows.clear();//这里不用清空,否则没有结果输出;
    			nextLay.clear();
    
    		}
    		return nodesValue;
    
    	}
        
    }
    
    多思考,多尝试。
  • 相关阅读:
    slurm.conf系统初始配置
    MySQL数据库服务器(YUM)安装
    Slurm任务调度系统部署和测试(源码)(1)
    并行管理工具——pdsh
    Munge服务部署和测试
    NTP服务部署和测试
    LDAP-openldap服务部署和测试(YUM安装)
    KVM虚拟机管理——虚拟机创建和操作系统安装
    KVM虚拟机管理——虚拟机克隆
    KVM虚拟化环境准备
  • 原文地址:https://www.cnblogs.com/LynnMin/p/9374004.html
Copyright © 2011-2022 走看看