• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:offer-34-从上到下打印二叉树III

java 搞代码 3年前 (2022-01-28) 23次浏览 已收录 0个评论
文章目录[隐藏]

从上到下打印二叉树III


和后面那题目相比多了一个奇数偶数打印程序
定义一个层数,奇数层就反转

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> reu = new ArrayList<>();
        //如果根节点为空就返回一个空的汇合
        if(root == null) return reu; 
        //定义一个寄存节点的数组
        List<TreeNode> tarr = new ArrayList<TreeNode>();
        //先把根节点加进去
        tarr.add(root);
        //定义层数
        int i = 0;
        //和后面那道题一样
        while(tarr.size()!=0){
            //在这外面还要从新定义两个数组,用于寄存每层的
            List<Integer> narr = new ArrayList<Integer>();
            List<TreeNode> carr = new ArrayList<TreeNode>();
            while(tarr.size()!=0){
                TreeNode temp = tarr.get(0);
                tarr.remove(0);
                //寄存值
                narr.add(temp.val);
                //将根节点的左右节点放在新的节点数组中
                if(temp.left!=null) carr.add(temp.left);
                if(temp.right!=null) carr.add(temp.right);
            }
            if(i%2 != 0){Collections.reverse(narr); }
            i++;
        //将每一层退出数组中
        reu.add(narr);
        //while完结阐明此时tarr是空的,然而carr因为退出了左右节点,所以不为空
        //此时tarr是对carr的援用
        tarr = carr;
        }
        return reu;

    }
}

另一个同学是定义了标记位

官网

这个是依据返回的数组的维度,维度是奇数来判断再第几层,看看是来源gao@!dai!ma.com搞$$代^@码网奇数层还是偶数层,如果是奇数层那就应该是正序,偶数层倒序,
在这个办法中层数从0开始,也就是依照索引号来的。第一层理论是0.第二层理论是1,……,在第二层(理论是1)(res.size()=1)应该是倒序,所以addFirst,每出队列一个数据都要加在队列头部,也就是倒序了,以此类推


这个就是把两种状况依照程序来了,原本层数1234就是先奇数层崽偶数层,所以先把奇数层打印结束,奇数层就是应该从左到右移除增加,而后子树也是从左到右顺次增加,而后去执行偶数层,偶数层就是从右向左倒序打印了,移除最初一个节点,而后把他的子树从右到左退出,并且加在表头地位,实际上就是正序的列表,而后增加到res中,再去及奇数层


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:offer-34-从上到下打印二叉树III
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址