zoukankan      html  css  js  c++  java
  • Java [Leetcode 107]Binary Tree Level Order Traversal II

    题目描述:

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

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

        3
       / 
      9  20
        /  
       15   7
    

    return its bottom-up level order traversal as:

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

    解题思路:

    运用广度优先搜索方法,运用队列的方法,每次遍历一层的叶节点,并把下一层的叶节点加入到队列中。每次遍历一层节点结束时候,将该层节点组成的list放到整体的list之前,实现由底到高的排列。

    代码如下:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public List<List<Integer>> levelOrderBottom(TreeNode root) {
        	List<List<Integer>> list = new LinkedList<List<Integer>>();
        	Queue<TreeNode> queue = new LinkedList<TreeNode>();
        	if(root == null)
        		return list;
        	queue.offer(root);
        	while(!queue.isEmpty()){
        		int num = queue.size();
        		List<Integer> levelList = new LinkedList<Integer>();
        		for(int i = 0; i < num; i++){
        			if(queue.peek().left != null)
        				queue.offer(queue.peek().left);
        			if(queue.peek().right != null)
        				queue.offer(queue.peek().right);
        			levelList.add(queue.poll().val);
        		}
        		list.add(0, levelList);
        	}
        	return list;
        }
    }
    

      

  • 相关阅读:
    MySQL语句创建表、插入数据遇到的问题-20/4/18
    【Navicat】MySQL 8.0.17 数据库报2059错误
    MySQL 8.0.17 版安装 || Windows
    C#--Invoke和BeginInvoke用法和区别
    C#--params关键字
    C#--typeof() 和 GetType()区别
    C#--利用反射编写的SqlHelper类
    C#--反射基础
    C#--LINQ--2--LINQ高级查询
    C#--LINQ--1--初学LINQ基础和查询
  • 原文地址:https://www.cnblogs.com/zihaowang/p/5149745.html
Copyright © 2011-2022 走看看