题目描述: 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。 示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 解题思路: 首先我们要 ...
分类:
其他好文 时间:
2020-08-12 15:48:20
阅读次数:
51
先序遍历:根-->左-->右的形式 public static void preOrderTraveralWithStsck(Node node){ Stack<Node> stack = new Stack(); //当节点的左右孩子全为空并且,栈空表示遍历完毕 while (node != nu ...
分类:
编程语言 时间:
2020-07-27 09:42:07
阅读次数:
81
102. 二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] # ...
分类:
其他好文 时间:
2020-07-26 15:44:06
阅读次数:
63
这个层序遍历要求返回每层的节点,正常的BFS从队列中弹出一个节点后就判断其有没有左子树和右子树,所以直接用BFS实现的话无法分层输出。 需要记录每层的节点数目,增加一个for循环就可以了。 /** * Definition for a binary tree node. * public class ...
分类:
编程语言 时间:
2020-07-25 23:51:28
阅读次数:
72
用C/C++编写二叉树的前序遍历,中序遍历,后序遍历(递归) 使用辅助队列的层序遍历(非递归) 特别说明一下层次遍历:借助一个队列,先将二叉树根结点入队,然后出队,访问出队结点,若它有左子树,则将左子树根结点入队;若它有右子树,则将右子树树根结点入队。然后出队,访问出队结点.......如此反复,直 ...
分类:
其他好文 时间:
2020-07-23 16:22:22
阅读次数:
66
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] class Solution( ...
分类:
其他好文 时间:
2020-07-19 13:49:57
阅读次数:
77
1. 队列定义: 一种可以实现 “先进先出” 的存储结构(类似于排队) 只允许在一端插入元素,在另一端删除元素,不可以混在一起 2. 队列分类: 链式队列:由链表实现的队列,本质是链表 静态队列:由数组实现的队列,本质是数组 3. 循环队列讲解 静态队列为什么必须时循环队列:静态队列必须是循环队列, ...
分类:
其他好文 时间:
2020-07-18 22:07:03
阅读次数:
68
102-二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 题目分析 此题类似于《剑指offer》的第32题 层序遍历二叉树是指对二叉树每一层从左到右进行访问。 非叶子节点 对于每一层的非叶子节点,都有两个子节点。在层序遍历时,上一层非叶子 ...
分类:
其他好文 时间:
2020-07-17 16:15:17
阅读次数:
50
题目的要求,大白话说就是:把指针指向同层的右侧节点 提到同层,自然就要想到层序遍历,自然是队列实现 问题是需要分层 所以采用之前题目用的那种计数的方式 class Solution { public Node connect(Node root) { if(root==null) {return r ...
分类:
其他好文 时间:
2020-07-13 18:42:31
阅读次数:
79
BFS和DFS DFS遍历使用递归(隐式使用栈): void dfs(TreeNode root) { if (root == null) { return; } dfs(root.left); dfs(root.right); } BFS遍历使用队列 void bfs(TreeNode root) ...
分类:
其他好文 时间:
2020-07-12 22:04:02
阅读次数:
66