Leetcode102.二叉树的层次遍历

非递归队列做法:
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        ArrayList<List<Integer>> result = new ArrayList();
        if(root == null){
        	return result;
        }
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.add(root);
        int level = 0;
        while ( !queue.isEmpty() ) {
          result.add(new ArrayList<Integer>());
          int level_length = queue.size();
          for(int i = 0; i < level_length; i++) {
            TreeNode node = queue.remove();
            result.get(level).add(node.val);
            if (node.left != null) queue.add(node.left);
            if (node.right != null) queue.add(node.right);
          }
          level++;
        }
        return result;
    }

}
递归:
	ArrayList<List<Integer>> result = new ArrayList();

	public void func(TreeNode node, int level) {
		if (result.size() == level)
			result.add(new ArrayList<Integer>());
		result.get(level).add(node.val);
		if (node.left != null)
			func(node.left, level + 1);
		if (node.right != null)
			func(node.right, level + 1);
	}

	public List<List<Integer>> levelOrder(TreeNode root) {
		if (root == null) {
			return result;
		}
		func(root, 0);

		return result;
	}
PS:递归的内存消耗居然要低于非递归,不知是不是测试样例的问题。。


全部评论

相关推荐

牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
拉丁是我干掉的:把上海理工大学改成北京理工大学。成功率增加200%
点赞 评论 收藏
分享
最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务