二叉树打印练习题

来源:互联网 发布:js math方法 编辑:程序博客网 时间:2024/06/05 17:46

有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。

给定二叉树的根结点root,请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。

解题思路:
思路还是很清晰的,使用两个队列一个存放节点,一个存放值。先将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右子节点加入到队列中来

链接:https://www.nowcoder.com/courses/1/1/2来源:牛客网 public int[][] printTree(TreeNode root) {        // write code here        ArrayList<ArrayList> result = new ArrayList();        ArrayList son = new ArrayList();        LinkedList<TreeNode> list = new LinkedList();        list.add(root);        TreeNode last = root;        TreeNode nlast = null;        TreeNode temp = null;        while (list.size() > 0) {            temp = list.poll();            son.add(temp.val);            if (temp.left != null) {                list.add(temp.left);                nlast = temp.left;            }            if (temp.right != null) {                list.add(temp.right);                nlast = temp.right;            }            if (last == temp) {                last = nlast;                result.add(son);                son = new ArrayList();            }        }        int re[][] = new int[result.size()][];        //变成二维数组        for (int i = 0; i < result.size(); i++) {            son = result.get(i);            /////////            re[i] = new int[son.size()];            for (int j = 0; j < son.size(); j++) {                re[i][j] = (int)son.get(j);            }        }        return re;    }
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 信用账户中签了怎么办 大话西游账号忘记了怎么办 网易云忘记账号怎么办 校园网登录不上怎么办 wifi名称隐藏了怎么办 玩游戏不能全屏怎么办 方舟手机版回档怎么办 进京证审核中怎么办 美篇审核中怎么办 视频不能转码怎么办 文件太大上传不了怎么办 数据库添加日志错误怎么办 桌面计算机图标不见了怎么办 qq空间封闭了怎么办 血小板600多怀孕怎么办 干活要不到工钱怎么办 银联手机号换了怎么办 深圳个体户工商年检怎么办 三个人合伙怎么办执照 两个人合伙怎么办执照 单位公章坏了怎么办 公章外壳坏了怎么办 公司变更名称银行怎么办 公司被起诉了怎么办 微信限制搜索怎么办 微博vip改不了怎么办 改不了微信号怎么办 修改不了微信号怎么办 触屏自检失败怎么办 微信名片加不上怎么办 微信号不是手机号怎么办 qq被盗号了怎么办 不知道对方名字怎么办 qq密码找不到了怎么办 好朋友跟你告白怎么办 感情破裂没证据怎么办 在微信里找不到昵称怎么办 营业执照副本丢了怎么办 个体营业执照副本丢失怎么办 三联发票丢了怎么办 发票领用簿用完怎么办