美文网首页
牛客网:二叉树的之字形层序遍历

牛客网:二叉树的之字形层序遍历

作者: 历十九喵喵喵 | 来源:发表于2021-01-10 00:08 被阅读0次

给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
例如:
给定的二叉树是{3,9,20,#,#,15,7},


image

该二叉树之字形层序遍历的结果是

[

[3],

[20,9],

[15,7]

]

重要的事情说三遍: 之 型遍历

思路: 二叉树层次遍历的变形题,可以用 dfs 进行层次遍历,当 拿到偶数层的时候,需要将元素 进行反转 存储。


/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型ArrayList<ArrayList<>>
     */
    public ArrayList<ArrayList<Integer>> zigzagLevelOrder (TreeNode root) {
        // write code here
        ArrayList<ArrayList<Integer>> result = new ArrayList<> ();
        
        if(root == null){
            return result;
        }
        dfs(root,result,1);
        return result;
    }
    
    private void dfs(TreeNode root,ArrayList<ArrayList<Integer>> res,int height){
        if(root == null){
            return;
        }
        
        // 如果 height 大于 res.size(), 说明 说明这一层没有对应的集合,需要新创建
        if(height > res.size()){
            res.add(new ArrayList<>());
        }
        
        if(height%2 != 0){
            // 奇数层,直接存放
            res.get(height-1).add(root.val);
        }else{
            //偶数层,需要将拿到的数进行反存储
            res.get(height-1).add(0,root.val);
        }
        
      //对左子树进行遍历
        dfs(root.left,res,height +1);
    //对右子树进行遍历
        dfs(root.right,res,height +1);
    }
}

相关文章

  • 一种特殊的树的遍历方式

    普通层序遍历: 之字形层序遍历

  • 牛客网:二叉树的之字形层序遍历

    给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是...

  • 重建二叉树

    题目来源:牛客网--重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序...

  • 重建二叉树

    上牛客网做了一道剑指offer的算法题 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设...

  • LeetCode题解:按Z字形顺序打印二叉树

    题目描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)数据范围:...

  • LeetCode-102-二叉树的层序遍历

    LeetCode-102-二叉树的层序遍历 102. 二叉树的层序遍历[https://leetcode-cn.c...

  • leecode刷题(25)-- 二叉树的层序遍历

    leecode刷题(25)-- 二叉树的层序遍历 二叉树的层序遍历 给定一个二叉树,返回其按层次遍历的节点值。 (...

  • goLang 二叉树遍历(递归 非递归 前序遍历 中序遍历 后序

    goLang 二叉树遍历(递归 非递归 前序遍历 中序遍历 后序遍历 层序遍历) 前序遍历 中序遍历 后序遍历 代...

  • 算法小结

    算法小结 1 二叉树 定义树节点形式 1.1 层序遍历 语义解析:层序遍历指的是二叉树根据层级进行遍历。 利用队列...

  • 二叉树相关算法

    二叉树定义 前序遍历(中序遍历、后续遍历只需要调整append的顺序即可) 层序遍历 二叉树的最大深度 对称二叉树...

网友评论

      本文标题:牛客网:二叉树的之字形层序遍历

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