145. 二叉树的后序遍历

2022-07-09

题目

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历

难度:🌟🌟

点击阅读

341. 扁平化嵌套列表迭代器

2022-07-09

题目

给你一个嵌套的整数列表 nestedList 。每个元素要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。请你实现一个迭代器将其扁平化,使之能够遍历这个列表中的所有整数。

实现扁平迭代器类 NestedIterator :

  • NestedIterator(List nestedList) 用嵌套列表 nestedList 初始化迭代器。
  • int next() 返回嵌套列表的下一个整数。
  • boolean hasNext() 如果仍然存在待迭代的整数,返回 true ;否则,返回 false 。

难度:🌟🌟🌟

点击阅读

606. 根据二叉树创建字符串

2022-07-09

题目

给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。

空节点使用一对空括号对 "()" 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

难度:🌟🌟

点击阅读

defer 的使用及其原理

2022-07-08
前言 defer 语句用于延迟函数的调用,每次 defer 都会把一个函数压入栈中,函数返回前再把延迟的函数取出并执行。 通常地,我们把创建 defer 的函数称为主函数,defer 语句后面的函数称为延迟函数。 延迟函数可能有输入参数,这...
点击阅读

971. 翻转二叉树以匹配先序遍历

2022-07-08

题目

给你一棵二叉树的根节点 root ,树中有 n 个节点,每个节点都有一个不同于其他节点且处于 1 到 n 之间的值。

另给你一个由 n 个值组成的行程序列 voyage ,表示 预期 的二叉树 先序遍历 结果。

通过交换节点的左右子树,可以 翻转 该二叉树中的任意节点。例,翻转节点 1 的效果如下:

请翻转 最少 的树中节点,使二叉树的 先序遍历 与预期的遍历行程 voyage 相匹配 。

如果可以,则返回 翻转的 所有节点的值的列表。你可以按任何顺序返回答案。如果不能,则返回列表 [-1]。

难度:🌟🌟🌟🌟

点击阅读

226. 翻转二叉树

2022-07-08

题目

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

难度:🌟

点击阅读
226. 翻转二叉树

Golang的map数据结构

2022-07-08

map 数据结构

Golang 的 map 使用哈希表作为底层实现,一个哈希表里可以有多个哈希表节点,也即 bucket,而每个 bucket 就保存了 map 中的一个或一组键值对。

点击阅读

116. 填充每个节点的下一个右侧节点指针

2022-07-08

给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:

struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。

初始状态下,所有 next 指针都被设置为 NULL。

难度:🌟🌟🌟

点击阅读

Golang的chan数据结构

2022-07-07

前言

channel 是 Golang 在语言层面提供的 goroutine(协程)间的通信方式,比 Unix 管道更易用也更轻便。channel 主要用于进程内各 goroutine 间通信,如果需要跨进程通信,建议使用分布式系统的方法来解决。

点击阅读

114. 二叉树展开为链表

2022-07-06

题目

给你二叉树的根结点 root ,请你将它展开为一个单链表:

  • 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
  • 展开后的单链表应该与二叉树 先序遍历 顺序相同。

难度:🌟🌟🌟

点击阅读