LeetCode

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

2022-07-08

题目

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

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

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

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

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

难度:🌟🌟🌟🌟

点击阅读

226. 翻转二叉树

2022-07-08

题目

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

难度:🌟

点击阅读
226. 翻转二叉树

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

2022-07-08

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

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

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

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

难度:🌟🌟🌟

点击阅读

114. 二叉树展开为链表

2022-07-06

题目

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

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

难度:🌟🌟🌟

点击阅读

111. 二叉树的最小深度

2022-07-06

题目

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

难度:🌟🌟

点击阅读

107. 二叉树的层序遍历 II

2022-07-06

题目

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

难度:🌟🌟🌟

点击阅读

654. 最大二叉树

2022-07-06

题目

给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:

创建一个根节点,其值为 nums 中的最大值。
递归地在最大值 左边 的 子数组前缀上 构建左子树。
递归地在最大值 右边 的 子数组后缀上 构建右子树。
返回 nums 构建的 最大二叉树 。

难度:🌟🌟🌟

点击阅读

106. 从中序与后序遍历序列构造二叉树

2022-07-06

题目

给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。

难度:🌟🌟🌟

点击阅读

105. 从前序与中序遍历序列构造二叉树

2022-07-06

题目

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

难度:🌟🌟🌟

点击阅读

543. 二叉树的直径

2022-07-06

题目

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。

难度:🌟🌟

点击阅读