leetcode-树练习-binary-tree-zigzag-level-order-traversal

binary-tree-zigzag-level-order-traversal

https://www.nowcoder.com/practice/47e1687126fa461e8a3aff8632aa5559?tpId=46&tqId=29075&rp=1&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking

这是一道解题思路总让我困扰的题目,今天终于把思路捋清楚捋顺了,以后应该都不会卡壳了。卡壳的主要原因是在遍历树的时候以及添加其节点的顺序是有点捋不清,总是写错。

题目描述
给定一个二叉树,返回该二叉树的之字形层序遍历,(从左向右,下一层从右向左,一直这样交替)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
3↵ / ↵ 9 20↵ / ↵ 15 7
该二叉树之字形层序遍历的结果是
[↵ [3],↵ [20,9],↵ [15,7]↵]

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
import java.util.ArrayList;
public class Solution {
    //这道题目就是层次遍历的变形.按照层次遍历的思想先遍历,如3;9,20;15,7;18,16;
    //然后在添加元素的时候把第二行第四行的数据反过来添加到结果中去就可以了
    public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {
        ArrayList<ArrayList<Integer>> result  = n

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白刷Leetcode 文章被收录于专栏

那些必刷的leetcode

全部评论
方法挺好的,有一点点不足就是:元素往arraylist头部添加时,会导致元素复制挪动影响效率。可以换成linkedlist提高效率。
1 回复 分享
发布于 2021-02-09 11:33
学姐,题目中给定的二叉树顺序应该是{3,9,20,15,7#,#,}吧,是不是题目有问题。
点赞 回复 分享
发布于 2021-03-02 19:35
学姐牛逼
点赞 回复 分享
发布于 2021-01-18 15:09
new了好多个,tree的list,感觉还是华科大佬的解法优雅一点
点赞 回复 分享
发布于 2021-01-08 15:27
懂了,add()方法存的是引用,学到了
点赞 回复 分享
发布于 2020-09-23 23:06
大佬,我是把ArrayList<integer> newLine = new ArrayList<integer>();这行放在while循环前,result.add(newLine);后面加一句newLine.clear();,为什么不行呢</integer></integer>
点赞 回复 分享
发布于 2020-09-23 22:49

相关推荐

不吃牛肉的选手在刷面试经:首先,你数过吗?其次,他知道吗?最后,你说了他信吗?
点赞 评论 收藏
分享
评论
11
1
分享

创作者周榜

更多
牛客网
牛客企业服务