区块链技术博客
www.b2bchain.cn

每日算法—-107. 二叉树的层次遍历 II—-2020/11/10

这篇文章主要介绍了每日算法—-107. 二叉树的层次遍历 II—-2020/11/10的讲解,通过具体代码实例进行16647 讲解,并且分析了每日算法—-107. 二叉树的层次遍历 II—-2020/11/10的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=16647

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

目录

        • 1. 题目描述
        • 2. 示例
        • 3. 思路
        • 4. 遇上的问题
        • 5. 具体实现代码
        • 6. 学习收获,官方一如既往的妙啊
        • 7 题目来源

1. 题目描述

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

2. 示例

每日算法----107. 二叉树的层次遍历 II----2020/11/10

3. 思路

深度遍历想着觉得麻烦,就用了广度遍历,

每层的判断很关键,我是在父节点判断子节点的时候判断下层有多少个子节点然后进行判断的。

4. 遇上的问题

  1. 深度遍历不可取,选择了广度遍历。
  2. 每层判断模糊不清,加了每层节点的数量计数器,保证每层进行循环能够判断。
  3. 装入之后发现是顺序的,先放到栈中然后再从栈中取出来放到返回的list里。

5. 具体实现代码

自己写的代码

/**  * Definition for a binary tree node.  * public class TreeNode {  *     int val;  *     TreeNode left;  *     TreeNode right;  *     TreeNode(int x) { val = x; }  * }  */ class Solution {     public List<List<Integer>> levelOrderBottom(TreeNode root) {     	//倒叙用的         Stack<List<Integer>> s = new Stack<List<Integer>>();         //返回使用         List<List<Integer>> list = new ArrayList<List<Integer>>();         //判断是否为0         if(root==null){              return list;         }         //广度遍历必备queue         Queue<TreeNode> queue = new LinkedList<TreeNode>();         //添加root,为遍历做好起始准备         queue.add(root);         //计数器count         int count = 1;         int temp = 0;         TreeNode node = null;         while(!queue.isEmpty()){             int i = 0;             //listSon用来存放每层的值             List<Integer> listSon = new ArrayList<Integer>();             //             while(i<count){                 node = queue.poll();                 listSon.add(node.val);                 System.out.println(node.val);                 if(node.left!=null){                     queue.add(node.left);                     temp++;                 }                  if(node.right!=null) {                     queue.add(node.right);                     temp++;                 }                 i++;             }             count = temp;             temp = 0;             s.add(listSon);         }         while(!s.empty()){             list.add(s.pop());         }         return list;     } } 

6. 学习收获,官方一如既往的妙啊

class Solution {     public List<List<Integer>> levelOrderBottom(TreeNode root) {         List<List<Integer>> levelOrder = new LinkedList<List<Integer>>();         if (root == null) {             return levelOrder;         }         Queue<TreeNode> queue = new LinkedList<TreeNode>();         queue.offer(root);         while (!queue.isEmpty()) {             List<Integer> level = new ArrayList<Integer>();             int size = queue.size();             for (int i = 0; i < size; i++) {                 TreeNode node = queue.poll();                 level.add(node.val);                 TreeNode left = node.left, right = node.right;                 if (left != null) {                     queue.offer(left);                 }                 if (right != null) {                     queue.offer(right);                 }             }             levelOrder.add(0, level);         }         return levelOrder;     } }  

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/solution/er-cha-shu-de-ceng-ci-bian-li-ii-by-leetcode-solut/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

7 题目来源

leetCode


闹心的事一来做算法题就不能认真做。只能先赶出来,明天再添加上细致的。 ——swrici

本文转自互联网,侵权联系删除每日算法—-107. 二叉树的层次遍历 II—-2020/11/10

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 每日算法—-107. 二叉树的层次遍历 II—-2020/11/10
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们