题解 | #求二叉树的层序遍历#

求二叉树的层序遍历

http://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3

本文仅用于本人记录

看了下题解就离谱,居然可以这么简单就做出来层次遍历二叉树:

import java.util.*;

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

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型ArrayList<ArrayList<>>
     */
    ArrayList<ArrayList<Integer>> result = new ArrayList<>();
    public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
        // write code here
        if(root == null){
            return result;
        }
        level(root,0);
        return result;
    }
    void level(TreeNode root,int level){
        if(level == result.size()){
            result.add(new ArrayList<>());
        }
        ArrayList<Integer> temp = result.get(level);
        temp.add(root.val);
        if(root.left != null){
            level(root.left,level+1);
        }
        if(root.right != null){
            level(root.right,level+1);
        }
    }
}

还看了下普通的解法,就是借助队列,我自己没写过,大概意思是处理好当前结点后,把当前节点的左孩子、右孩子放入队列中,然后结束一轮循环继续下一轮。直到队列为空无法再继续下去就退出循环。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务