原创

[百战LeetCode][29.二叉树之字形打印]


==========================努力奋斗财源广进==========================

一、算法题目

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

1、我的题解

import java.util.*;
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>> res = new ArrayList<>();
        Deque<TreeNode> deque = new LinkedList<>();
        if(pRoot != null) deque.add(pRoot);
        while(!deque.isEmpty()){
            ArrayList<Integer> rstOdd = new ArrayList<>();
            //先奇数遍历
            int count = deque.size();
            for(int i = 0; i < count; i++){
                TreeNode node = deque.removeLast();
                rstOdd.add(node.val);
                if(node.left != null) deque.addFirst(node.left);
                if(node.right != null) deque.addFirst(node.right);
            }
            res.add(rstOdd);
            if(deque.isEmpty()) break;
            ArrayList<Integer> rstEven = new ArrayList<>();
            count = deque.size();
            for(int i = 0; i < count; i++){
                TreeNode node = deque.removeFirst();
                rstEven.add(node.val);
                if(node.right != null) deque.addLast(node.right);
                if(node.left != null)  deque.addLast(node.left);
            }
            res.add(rstEven);
        }
        return res;
    }

}

2、优秀题解

//待定

三、解法心得

将二叉树画出来,然后根据顺序进行打印。比较麻烦,关于方向。

四、自我监督

评论区记录复习记录

算法刷题
  • 作者:北斗七点半联系作者
  • 发表时间:2022-07-20 21:41
  • 版权声明:禁止转载
  • 非公众号转发
  • 评论