博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetCode 103.Binary Tree Zigzag Level Order Traversal (二叉树Z字形水平序) 解题思路和方法...
阅读量:5096 次
发布时间:2019-06-13

本文共 1341 字,大约阅读时间需要 4 分钟。

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).

For example:

Given binary tree {3,9,20,#,#,15,7},

3   / \  9  20    /  \   15   7

return its zigzag level order traversal as:

[  [3],  [20,9],  [15,7]]

思路:与二叉树水平序解题思路几乎相同,得到水平序结果之后。再对偶数链表反转就可以。‘

代码例如以下:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    List
> list = new ArrayList
>(); public List
> zigzagLevelOrder(TreeNode root) { dfs(0,root); //每隔1行交换顺序 for(int i = 1; i < list.size(); i = i+2){ List
al = list.get(i); int len = al.size(); //倒序交换 for(int j = 0; j + j < len-1; j++){ int k = al.get(j); al.set(j, al.get(len-1-j)); al.set(len-1-j, k); } } return list; } /** * 中序遍历,依据深度加入list * @param dep 树的深度 * @param root 根节点 */ private void dfs(int dep,TreeNode root){ if(root == null){ return; } List
al;//依据情况得到al值 if(list.size() > dep){ al = list.get(dep); }else{ al = new ArrayList
(); list.add(al); } dfs(dep+1,root.left); al.add(root.val); dfs(dep+1,root.right); }}

转载于:https://www.cnblogs.com/llguanli/p/7124758.html

你可能感兴趣的文章
第九周编程总结
查看>>
007-li标签CSS水平居中垂直居中
查看>>
Python -- 基础
查看>>
第五次作业
查看>>
WCF 第二章 契约 WSDL中的操作名字、类型、操作和命名空间
查看>>
别再写 bug 了,避免空指针的 5 个案例!
查看>>
面试问我 Java 逃逸分析,瞬间被秒杀了。。
查看>>
公式/定理
查看>>
dockerfile mysql
查看>>
Linux 释放cache化缓存
查看>>
loadrunner11的移动端性能测试之场景设计
查看>>
C#颜色转Delphi颜色的C#代码
查看>>
MainFrame知识小结(20110925)--cobol中table越界
查看>>
hdu 5159 Card (期望)
查看>>
hdu 5429 Geometric Progression(存个大数模板)
查看>>
深入理解java异常处理机制
查看>>
Spring知识整理【二】 Spring IOC
查看>>
DTD举例一
查看>>
Package与Activity简介
查看>>
python使用cookielib库示例分享
查看>>